Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: src/core/SkNx.h

Issue 1590843003: add SkNx::abs(), for now only implemented for Sk4f (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: SkTAbs Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/opts/SkNx_neon.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkNx_DEFINED 8 #ifndef SkNx_DEFINED
9 #define SkNx_DEFINED 9 #define SkNx_DEFINED
10 10
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 SkNx operator <= (const SkNx& o) const { return SkNx(fLo <= o.fLo, fHi <= o. fHi); } 67 SkNx operator <= (const SkNx& o) const { return SkNx(fLo <= o.fLo, fHi <= o. fHi); }
68 SkNx operator >= (const SkNx& o) const { return SkNx(fLo >= o.fLo, fHi >= o. fHi); } 68 SkNx operator >= (const SkNx& o) const { return SkNx(fLo >= o.fLo, fHi >= o. fHi); }
69 69
70 static SkNx Min(const SkNx& a, const SkNx& b) { 70 static SkNx Min(const SkNx& a, const SkNx& b) {
71 return SkNx(SkNx<N/2, T>::Min(a.fLo, b.fLo), SkNx<N/2, T>::Min(a.fHi, b. fHi)); 71 return SkNx(SkNx<N/2, T>::Min(a.fLo, b.fLo), SkNx<N/2, T>::Min(a.fHi, b. fHi));
72 } 72 }
73 static SkNx Max(const SkNx& a, const SkNx& b) { 73 static SkNx Max(const SkNx& a, const SkNx& b) {
74 return SkNx(SkNx<N/2, T>::Max(a.fLo, b.fLo), SkNx<N/2, T>::Max(a.fHi, b. fHi)); 74 return SkNx(SkNx<N/2, T>::Max(a.fLo, b.fLo), SkNx<N/2, T>::Max(a.fHi, b. fHi));
75 } 75 }
76 76
77 SkNx abs() const { return SkNx(fLo.abs(), fHi.abs()); }
78
77 SkNx sqrt() const { return SkNx(fLo.sqrt(), fHi.sqrt()); } 79 SkNx sqrt() const { return SkNx(fLo.sqrt(), fHi.sqrt()); }
78 // Generally, increasing precision, increasing cost. 80 // Generally, increasing precision, increasing cost.
79 SkNx rsqrt0() const { return SkNx(fLo.rsqrt0(), fHi.rsqrt0()); } 81 SkNx rsqrt0() const { return SkNx(fLo.rsqrt0(), fHi.rsqrt0()); }
80 SkNx rsqrt1() const { return SkNx(fLo.rsqrt1(), fHi.rsqrt1()); } 82 SkNx rsqrt1() const { return SkNx(fLo.rsqrt1(), fHi.rsqrt1()); }
81 SkNx rsqrt2() const { return SkNx(fLo.rsqrt2(), fHi.rsqrt2()); } 83 SkNx rsqrt2() const { return SkNx(fLo.rsqrt2(), fHi.rsqrt2()); }
82 84
83 SkNx invert() const { return SkNx(fLo. invert(), fHi. invert ()); } 85 SkNx invert() const { return SkNx(fLo. invert(), fHi. invert ()); }
84 SkNx approxInvert() const { return SkNx(fLo.approxInvert(), fHi.approxInvert ()); } 86 SkNx approxInvert() const { return SkNx(fLo.approxInvert(), fHi.approxInvert ()); }
85 87
86 template <int k> T kth() const { 88 template <int k> T kth() const {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 SkNx operator == (const SkNx& o) const { return SkNx(fVal == o.fVal); } 129 SkNx operator == (const SkNx& o) const { return SkNx(fVal == o.fVal); }
128 SkNx operator != (const SkNx& o) const { return SkNx(fVal != o.fVal); } 130 SkNx operator != (const SkNx& o) const { return SkNx(fVal != o.fVal); }
129 SkNx operator < (const SkNx& o) const { return SkNx(fVal < o.fVal); } 131 SkNx operator < (const SkNx& o) const { return SkNx(fVal < o.fVal); }
130 SkNx operator > (const SkNx& o) const { return SkNx(fVal > o.fVal); } 132 SkNx operator > (const SkNx& o) const { return SkNx(fVal > o.fVal); }
131 SkNx operator <= (const SkNx& o) const { return SkNx(fVal <= o.fVal); } 133 SkNx operator <= (const SkNx& o) const { return SkNx(fVal <= o.fVal); }
132 SkNx operator >= (const SkNx& o) const { return SkNx(fVal >= o.fVal); } 134 SkNx operator >= (const SkNx& o) const { return SkNx(fVal >= o.fVal); }
133 135
134 static SkNx Min(const SkNx& a, const SkNx& b) { return SkNx(SkTMin(a.fVal, b .fVal)); } 136 static SkNx Min(const SkNx& a, const SkNx& b) { return SkNx(SkTMin(a.fVal, b .fVal)); }
135 static SkNx Max(const SkNx& a, const SkNx& b) { return SkNx(SkTMax(a.fVal, b .fVal)); } 137 static SkNx Max(const SkNx& a, const SkNx& b) { return SkNx(SkTMax(a.fVal, b .fVal)); }
136 138
139 SkNx abs() const { return SkTAbs(fVal); }
140
137 SkNx sqrt () const { return SkNx(Sqrt(fVal)); } 141 SkNx sqrt () const { return SkNx(Sqrt(fVal)); }
138 SkNx rsqrt0() const { return this->sqrt().invert(); } 142 SkNx rsqrt0() const { return this->sqrt().invert(); }
139 SkNx rsqrt1() const { return this->rsqrt0(); } 143 SkNx rsqrt1() const { return this->rsqrt0(); }
140 SkNx rsqrt2() const { return this->rsqrt1(); } 144 SkNx rsqrt2() const { return this->rsqrt1(); }
141 145
142 SkNx invert() const { return SkNx(1) / SkNx(fVal); } 146 SkNx invert() const { return SkNx(1) / SkNx(fVal); }
143 SkNx approxInvert() const { return this->invert(); } 147 SkNx approxInvert() const { return this->invert(); }
144 148
145 template <int k> T kth() const { 149 template <int k> T kth() const {
146 SkASSERT(0 == k); 150 SkASSERT(0 == k);
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 SkNx_cast<uint8_t>(b).store(p+ 4); 242 SkNx_cast<uint8_t>(b).store(p+ 4);
239 SkNx_cast<uint8_t>(c).store(p+ 8); 243 SkNx_cast<uint8_t>(c).store(p+ 8);
240 SkNx_cast<uint8_t>(d).store(p+12); 244 SkNx_cast<uint8_t>(d).store(p+12);
241 } 245 }
242 #endif 246 #endif
243 247
244 #undef REQUIRE 248 #undef REQUIRE
245 249
246 250
247 #endif//SkNx_DEFINED 251 #endif//SkNx_DEFINED
OLDNEW
« no previous file with comments | « no previous file | src/opts/SkNx_neon.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698