diff --git a/gn/core.gni b/gn/core.gni
index e4d26bb..cf65c77 100644
--- a/gn/core.gni
+++ b/gn/core.gni
@@ -272,15 +272,13 @@
   "$_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
new file mode 100644
index 0000000..14283cb
--- /dev/null
+++ b/src/core/SkOpts_avx.cpp
@@ -0,0 +1,73 @@
+/*
+ * 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
new file mode 100644
index 0000000..e8b0d5a
--- /dev/null
+++ b/src/core/SkOpts_crc32.cpp
@@ -0,0 +1,41 @@
+/*
+ * 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
new file mode 100644
index 0000000..a6ff3ae
--- /dev/null
+++ b/src/core/SkOpts_sse41.cpp
@@ -0,0 +1,67 @@
+/*
+ * 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
new file mode 100644
index 0000000..46f0851
--- /dev/null
+++ b/src/core/SkOpts_sse42.cpp
@@ -0,0 +1,52 @@
+/*
+ * 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
new file mode 100644
index 0000000..7009546
--- /dev/null
+++ b/src/core/SkOpts_ssse3.cpp
@@ -0,0 +1,67 @@
+/*
+ * 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 80ccf54..049c90e 100644
--- a/src/opts/SkOpts_avx.cpp
+++ b/src/opts/SkOpts_avx.cpp
@@ -5,32 +5,4 @@
  * found in the LICENSE file.
  */
 
-#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
-    }
-}
+// Intentionally empty, to be cleaned up.
diff --git a/src/opts/SkOpts_crc32.cpp b/src/opts/SkOpts_crc32.cpp
index 205f0eb..049c90e 100644
--- a/src/opts/SkOpts_crc32.cpp
+++ b/src/opts/SkOpts_crc32.cpp
@@ -5,13 +5,4 @@
  * found in the LICENSE file.
  */
 
-#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;
-    }
-}
+// Intentionally empty, to be cleaned up.
diff --git a/src/opts/SkOpts_sse41.cpp b/src/opts/SkOpts_sse41.cpp
index 8e52596..abd4796 100644
--- a/src/opts/SkOpts_sse41.cpp
+++ b/src/opts/SkOpts_sse41.cpp
@@ -5,27 +5,4 @@
  * found in the LICENSE file.
  */
 
-#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
-    }
-}
+// Intentionally empty, to be cleaned up.
diff --git a/src/opts/SkOpts_sse42.cpp b/src/opts/SkOpts_sse42.cpp
index 8e80fff..049c90e 100644
--- a/src/opts/SkOpts_sse42.cpp
+++ b/src/opts/SkOpts_sse42.cpp
@@ -5,14 +5,4 @@
  * found in the LICENSE file.
  */
 
-#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;
-    }
-}
-
+// Intentionally empty, to be cleaned up.
diff --git a/src/opts/SkOpts_ssse3.cpp b/src/opts/SkOpts_ssse3.cpp
index daa6987..abd4796 100644
--- a/src/opts/SkOpts_ssse3.cpp
+++ b/src/opts/SkOpts_ssse3.cpp
@@ -5,29 +5,4 @@
  * found in the LICENSE file.
  */
 
-#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;
-    }
-}
+// Intentionally empty, to be cleaned up.
