| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |