Chromium Code Reviews| Index: src/core/SkNx.h |
| diff --git a/src/core/SkNx.h b/src/core/SkNx.h |
| index dec63f8d898d9d39fb3f5682ddd0dac67933f0c4..2848f052b614ee493e4e98920dad8079009e8856 100644 |
| --- a/src/core/SkNx.h |
| +++ b/src/core/SkNx.h |
| @@ -309,6 +309,20 @@ SI Sk4i Sk4f_round(const Sk4f& x) { |
| (int) lrintf (x[3]), }; |
| } |
| +// Transpose 4 Sk4h and store (256 bits total). |
| +SI void Sk4h_store4(void* dst, const Sk4h& r, const Sk4h& g, const Sk4h& b, const Sk4h& a) { |
|
mtklein
2016/07/19 15:37:47
How about
auto dst64 = (uint64_t*)dst;
Sk4h(r[0],
msarett
2016/07/19 15:47:20
SGTM
|
| + Sk4h rgba0 = Sk4h(r[0], g[0], b[0], a[0]); |
| + Sk4h rgba1 = Sk4h(r[1], g[1], b[1], a[1]); |
| + Sk4h rgba2 = Sk4h(r[2], g[2], b[2], a[2]); |
| + Sk4h rgba3 = Sk4h(r[3], g[3], b[3], a[3]); |
| + |
| + uint64_t* dst64 = (uint64_t*) dst; |
| + rgba0.store(dst64 + 0); |
| + rgba1.store(dst64 + 1); |
| + rgba2.store(dst64 + 2); |
| + rgba3.store(dst64 + 3); |
| +} |
| + |
| #endif |
| SI void Sk4f_ToBytes(uint8_t p[16], const Sk4f& a, const Sk4f& b, const Sk4f& c, const Sk4f& d) { |