aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/opts/SkNx_sse.h
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@google.com>2015-04-27 11:21:16 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-04-27 11:21:16 -0700
commit8d3e9dff3f3db3fa77c383e4cd6c47b9898a8fcd (patch)
treeeee352eb6dc903b3762a47da5a8fecbdcbdb6016 /src/opts/SkNx_sse.h
parent8a0a16d0a5e684e22cc3464642bc03bf341149a8 (diff)
Revert of Mike's radial gradient CL with better float -> int. (patchset #7 id:120001 of https://codereview.chromium.org/1109643002/)
Reason for revert: compile failures. Original issue's description: > Mike's radial gradient CL with better float -> int. > > patch from issue 1072303005 at patchset 40001 (http://crrev.com/1072303005#ps40001) > > This looks quite launchable. radial_gradient3, min of 100 samples: > N5: 985µs -> 946µs > MBP: 395µs -> 279µs > > On my MBP, most of the meat looks like it's now in reading the cache and writing to dst one color at a time. Is that something we could do in float math rather than with a lookup table? > > BUG=skia: > > CQ_EXTRA_TRYBOTS=client.skia.android:Test-Android-GCC-Nexus5-CPU-NEON-Arm7-Debug-Trybot,Test-Android-GCC-Nexus9-CPU-Denver-Arm64-Debug-Trybot > > Committed: https://skia.googlesource.com/skia/+/abf6c5cf95e921fae59efb487480e5b5081cf0ec TBR=reed@google.com,robertphillips@google.com,mtklein@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1109883003
Diffstat (limited to 'src/opts/SkNx_sse.h')
-rw-r--r--src/opts/SkNx_sse.h40
1 files changed, 0 insertions, 40 deletions
diff --git a/src/opts/SkNx_sse.h b/src/opts/SkNx_sse.h
index 2608525bd0..46ddcb2d12 100644
--- a/src/opts/SkNx_sse.h
+++ b/src/opts/SkNx_sse.h
@@ -142,44 +142,6 @@ private:
};
template <>
-class SkNi<4, int> {
-public:
- SkNi(const __m128i& vec) : fVec(vec) {}
-
- SkNi() {}
- explicit SkNi(int val) : fVec(_mm_set1_epi32(val)) {}
- static SkNi Load(const int vals[4]) { return _mm_loadu_si128((const __m128i*)vals); }
- SkNi(int a, int b, int c, int d) : fVec(_mm_setr_epi32(a,b,c,d)) {}
-
- void store(int vals[4]) const { _mm_storeu_si128((__m128i*)vals, fVec); }
-
- SkNi operator + (const SkNi& o) const { return _mm_add_epi32(fVec, o.fVec); }
- SkNi operator - (const SkNi& o) const { return _mm_sub_epi32(fVec, o.fVec); }
- SkNi operator * (const SkNi& o) const {
- __m128i mul20 = _mm_mul_epu32(fVec, o.fVec),
- mul31 = _mm_mul_epu32(_mm_srli_si128(fVec, 4), _mm_srli_si128(o.fVec, 4));
- return _mm_unpacklo_epi32(_mm_shuffle_epi32(mul20, _MM_SHUFFLE(0,0,2,0)),
- _mm_shuffle_epi32(mul31, _MM_SHUFFLE(0,0,2,0)));
- }
-
- SkNi operator << (int bits) const { return _mm_slli_epi32(fVec, bits); }
- SkNi operator >> (int bits) const { return _mm_srai_epi32(fVec, bits); }
-
- template <int k> int kth() const {
- SkASSERT(0 <= k && k < 4);
- switch (k) {
- case 0: return _mm_cvtsi128_si32(fVec);
- case 1: return _mm_cvtsi128_si32(_mm_srli_si128(fVec, 4));
- case 2: return _mm_cvtsi128_si32(_mm_srli_si128(fVec, 8));
- case 3: return _mm_cvtsi128_si32(_mm_srli_si128(fVec, 12));
- default: SkASSERT(false); return 0;
- }
- }
-protected:
- __m128i fVec;
-};
-
-template <>
class SkNf<4, float> {
typedef SkNb<4, 4> Nb;
public:
@@ -192,8 +154,6 @@ public:
void store(float vals[4]) const { _mm_storeu_ps(vals, fVec); }
- SkNi<4, int> castTrunc() const { return _mm_cvttps_epi32(fVec); }
-
SkNf operator + (const SkNf& o) const { return _mm_add_ps(fVec, o.fVec); }
SkNf operator - (const SkNf& o) const { return _mm_sub_ps(fVec, o.fVec); }
SkNf operator * (const SkNf& o) const { return _mm_mul_ps(fVec, o.fVec); }