Remove SkNx AVX code. It is not really used. Getting in the way of refactoring.
authormtklein <mtklein@chromium.org>
Mon, 8 Feb 2016 23:50:22 +0000 (15:50 -0800)
committerCommit bot <commit-bot@chromium.org>
Mon, 8 Feb 2016 23:50:22 +0000 (15:50 -0800)
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1679053002
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review URL: https://codereview.chromium.org/1679053002

gyp/opts.gypi
src/core/SkNx.h
src/core/SkOpts.cpp
src/opts/SkNx_avx.h [deleted file]
src/opts/SkOpts_avx.cpp [deleted file]

index f2d36b9dfc1613e0d6fa7f39b615ef6436eae9c2..3401a80e8552acc817fef87e1cd228f296d28bbd 100644 (file)
@@ -57,7 +57,7 @@
             '<(skia_src_path)/core/SkForceCPlusPlusLinking.cpp',
         ],
         'avx_sources': [
-            '<(skia_src_path)/opts/SkOpts_avx.cpp',
+            '<(skia_src_path)/core/SkForceCPlusPlusLinking.cpp',
         ],
         'avx2_sources': [
             '<(skia_src_path)/core/SkForceCPlusPlusLinking.cpp',
index 4cb15dffe725efb928a24fb0344c253fe99f064e..7ae5d82976960dffd405c9a96cfa67c84001a56b 100644 (file)
@@ -237,9 +237,7 @@ typedef SkNx<16, uint8_t>  Sk16b;
 typedef SkNx<4, int> Sk4i;
 
 // Include platform specific specializations if available.
-#if !defined(SKNX_NO_SIMD) && SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_AVX
-    #include "../opts/SkNx_avx.h"
-#elif !defined(SKNX_NO_SIMD) && SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2
+#if !defined(SKNX_NO_SIMD) && SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2
     #include "../opts/SkNx_sse.h"
 #elif !defined(SKNX_NO_SIMD) && defined(SK_ARM_HAS_NEON)
     #include "../opts/SkNx_neon.h"
index 56604171bbe9629b77efe64c3919294e57fbde28..fbc4f6cd6243313a6670b8882b2807885200343c 100644 (file)
@@ -94,7 +94,7 @@ namespace SkOpts {
     void Init_ssse3();
     void Init_sse41();
     void Init_sse42() {}
-    void Init_avx();
+    void Init_avx() {}
     void Init_avx2() {}
     void Init_neon();
 
diff --git a/src/opts/SkNx_avx.h b/src/opts/SkNx_avx.h
deleted file mode 100644 (file)
index 85a2110..0000000
+++ /dev/null
@@ -1,94 +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.
- */
-
-#ifndef SkNx_avx_DEFINED
-#define SkNx_avx_DEFINED
-
-// This file may assume <= AVX, but must check SK_CPU_SSE_LEVEL for anything more recent.
-
-// All the SSE specializations are still good ideas.  We'll just add Sk8f.
-#include "SkNx_sse.h"
-
-// SkNx_sse.h defines SKNX_IS_FAST.
-
-namespace {  // See SkNx.h
-
-template <>
-class SkNx<8, float> {
-public:
-    SkNx(const __m256& vec) : fVec(vec) {}
-
-    SkNx() {}
-    SkNx(float val) : fVec(_mm256_set1_ps(val)) {}
-    static SkNx Load(const void* ptr) { return _mm256_loadu_ps((const float*)ptr); }
-
-    SkNx(float a, float b, float c, float d,
-         float e, float f, float g, float h) : fVec(_mm256_setr_ps(a,b,c,d,e,f,g,h)) {}
-
-    void store(void* ptr) const { _mm256_storeu_ps((float*)ptr, fVec); }
-
-    SkNx operator + (const SkNx& o) const { return _mm256_add_ps(fVec, o.fVec); }
-    SkNx operator - (const SkNx& o) const { return _mm256_sub_ps(fVec, o.fVec); }
-    SkNx operator * (const SkNx& o) const { return _mm256_mul_ps(fVec, o.fVec); }
-    SkNx operator / (const SkNx& o) const { return _mm256_div_ps(fVec, o.fVec); }
-
-    SkNx operator == (const SkNx& o) const { return _mm256_cmp_ps(fVec, o.fVec, _CMP_EQ_OQ); }
-    SkNx operator != (const SkNx& o) const { return _mm256_cmp_ps(fVec, o.fVec, _CMP_NEQ_OQ); }
-    SkNx operator  < (const SkNx& o) const { return _mm256_cmp_ps(fVec, o.fVec, _CMP_LT_OQ); }
-    SkNx operator  > (const SkNx& o) const { return _mm256_cmp_ps(fVec, o.fVec, _CMP_GT_OQ); }
-    SkNx operator <= (const SkNx& o) const { return _mm256_cmp_ps(fVec, o.fVec, _CMP_LE_OQ); }
-    SkNx operator >= (const SkNx& o) const { return _mm256_cmp_ps(fVec, o.fVec, _CMP_GE_OQ); }
-
-    static SkNx Min(const SkNx& l, const SkNx& r) { return _mm256_min_ps(l.fVec, r.fVec); }
-    static SkNx Max(const SkNx& l, const SkNx& r) { return _mm256_max_ps(l.fVec, r.fVec); }
-
-    SkNx  sqrt() const { return _mm256_sqrt_ps (fVec);  }
-    SkNx rsqrt0() const { return _mm256_rsqrt_ps(fVec); }
-    SkNx rsqrt1() const { return this->rsqrt0(); }
-    SkNx rsqrt2() const { return this->rsqrt1(); }
-
-    SkNx       invert() const { return SkNx(1) / *this; }
-    SkNx approxInvert() const { return _mm256_rcp_ps(fVec); }
-
-    template <int k> float kth() const {
-        SkASSERT(0 <= k && k < 8);
-        union { __m256 v; float fs[8]; } pun = {fVec};
-        return pun.fs[k&7];
-    }
-
-    bool allTrue() const { return 0xff == _mm256_movemask_ps(fVec); }
-    bool anyTrue() const { return 0x00 != _mm256_movemask_ps(fVec); }
-
-    SkNx thenElse(const SkNx& t, const SkNx& e) const {
-        return _mm256_blendv_ps(e.fVec, t.fVec, fVec);
-    }
-
-    __m256 fVec;
-};
-
-template<> inline Sk8b SkNx_cast<uint8_t, float, 8>(const Sk8f& src) {
-    __m256i _32 = _mm256_cvttps_epi32(src.fVec);
-    __m128i  lo = _mm256_extractf128_si256(_32, 0),
-             hi = _mm256_extractf128_si256(_32, 1),
-            _16 = _mm_packus_epi32(lo, hi);
-    return _mm_packus_epi16(_16, _16);
-}
-
-template<> inline Sk8f SkNx_cast<float, uint8_t, 8>(const Sk8b& src) {
-    /* TODO lo = _mm_cvtepu8_epi32(src.fVec),
-     *      hi = _mm_cvtepu8_epi32(_mm_srli_si128(src.fVec, 4))
-     */
-    __m128i _16 = _mm_unpacklo_epi8(src.fVec, _mm_setzero_si128()),
-             lo = _mm_unpacklo_epi16(_16, _mm_setzero_si128()),
-             hi = _mm_unpackhi_epi16(_16, _mm_setzero_si128());
-    __m256i _32 = _mm256_insertf128_si256(_mm256_castsi128_si256(lo), hi, 1);
-    return _mm256_cvtepi32_ps(_32);
-}
-
-}  // namespace
-
-#endif//SkNx_avx_DEFINED
diff --git a/src/opts/SkOpts_avx.cpp b/src/opts/SkOpts_avx.cpp
deleted file mode 100644 (file)
index 8802153..0000000
+++ /dev/null
@@ -1,17 +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 sk_avx
-#include "SkXfermode_opts.h"
-
-namespace SkOpts {
-    void Init_avx() {
-        create_xfermode = sk_avx::create_xfermode;
-    }
-}
-