| 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 <arm_neon.h> | 7 #include <arm_neon.h> |
| 8 | 8 |
| 9 // Template metaprogramming to map scalar types to vector types. | 9 // Template metaprogramming to map scalar types to vector types. |
| 10 template <typename T> struct SkScalarToSIMD; | 10 template <typename T> struct SkScalarToSIMD; |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 } | 213 } |
| 214 M(Sk4i) ZWCD(const Sk4i& xyzw, const Sk4i& abcd) { | 214 M(Sk4i) ZWCD(const Sk4i& xyzw, const Sk4i& abcd) { |
| 215 int32x4x2_t xayb_zcwd = vzipq_s32(xyzw.fVec, abcd.fVec); | 215 int32x4x2_t xayb_zcwd = vzipq_s32(xyzw.fVec, abcd.fVec); |
| 216 int32x4x2_t axby_czdw = vzipq_s32(abcd.fVec, xyzw.fVec); | 216 int32x4x2_t axby_czdw = vzipq_s32(abcd.fVec, xyzw.fVec); |
| 217 return vuzpq_s32(xayb_zcwd.val[1], axby_czdw.val[1]).val[0]; | 217 return vuzpq_s32(xayb_zcwd.val[1], axby_czdw.val[1]).val[0]; |
| 218 } | 218 } |
| 219 | 219 |
| 220 #undef M | 220 #undef M |
| 221 | 221 |
| 222 #endif | 222 #endif |
| OLD | NEW |