OLD | NEW |
1 // It is important _not_ to put header guards here. | 1 // It is important _not_ to put header guards here. |
2 // This file will be intentionally included three times. | 2 // This file will be intentionally included three times. |
3 | 3 |
4 #include "SkTypes.h" // Keep this before any #ifdef for skbug.com/3362 | 4 #include "SkTypes.h" // Keep this before any #ifdef for skbug.com/3362 |
5 | 5 |
6 #if defined(SK4X_PREAMBLE) | 6 #if defined(SK4X_PREAMBLE) |
7 #include "SkFloatingPoint.h" | 7 #include "SkFloatingPoint.h" |
8 #include <math.h> | 8 #include <math.h> |
9 | 9 |
10 #elif defined(SK4X_PRIVATE) | 10 #elif defined(SK4X_PRIVATE) |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 SkTMax(a.fVec[3], b.fVec[3])); | 104 SkTMax(a.fVec[3], b.fVec[3])); |
105 } | 105 } |
106 | 106 |
107 M(template <int m, int a, int s, int k> Sk4x<T>) Shuffle(const Sk4x<T>& x, const
Sk4x<T>& y) { | 107 M(template <int m, int a, int s, int k> Sk4x<T>) Shuffle(const Sk4x<T>& x, const
Sk4x<T>& y) { |
108 return Sk4x(m < 4 ? x.fVec[m] : y.fVec[m-4], | 108 return Sk4x(m < 4 ? x.fVec[m] : y.fVec[m-4], |
109 a < 4 ? x.fVec[a] : y.fVec[a-4], | 109 a < 4 ? x.fVec[a] : y.fVec[a-4], |
110 s < 4 ? x.fVec[s] : y.fVec[s-4], | 110 s < 4 ? x.fVec[s] : y.fVec[s-4], |
111 k < 4 ? x.fVec[k] : y.fVec[k-4]); | 111 k < 4 ? x.fVec[k] : y.fVec[k-4]); |
112 } | 112 } |
113 | 113 |
| 114 M(Sk4x<T>) aacc() const { return Shuffle<0,0,2,2>(*this, *this); } |
| 115 M(Sk4x<T>) bbdd() const { return Shuffle<1,1,3,3>(*this, *this); } |
114 M(Sk4x<T>) badc() const { return Shuffle<1,0,3,2>(*this, *this); } | 116 M(Sk4x<T>) badc() const { return Shuffle<1,0,3,2>(*this, *this); } |
115 | 117 |
116 #undef M | 118 #undef M |
117 | 119 |
118 #endif | 120 #endif |
OLD | NEW |