aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkNx.h
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-11-30 12:07:20 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-01 19:26:02 +0000
commit213d8214628ec7a844f00b5b7bb63b9bf02d7303 (patch)
treed1ec7aece9b35d43d8f41046f70dc32730dd7884 /src/core/SkNx.h
parenta158e174582c96c948c68b3f48d21c2e24fbad78 (diff)
add Load2() to Sk4f
and test it. Change-Id: Ib0c2cf93c63d8d3c36a7d4d60bbec4ecede29bc7 Reviewed-on: https://skia-review.googlesource.com/78480 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/core/SkNx.h')
-rw-r--r--src/core/SkNx.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/core/SkNx.h b/src/core/SkNx.h
index 6957cb0d38..91c978b70b 100644
--- a/src/core/SkNx.h
+++ b/src/core/SkNx.h
@@ -78,6 +78,15 @@ struct SkNx {
*b = SkNx{bl, bh};
*c = SkNx{cl, ch};
}
+ AI static void Load2(const void* vptr, SkNx* a, SkNx* b) {
+ auto ptr = (const char*)vptr;
+ Half al, bl,
+ ah, bh;
+ Half::Load2(ptr , &al, &bl);
+ Half::Load2(ptr + 2*N/2*sizeof(T), &ah, &bh);
+ *a = SkNx{al, ah};
+ *b = SkNx{bl, bh};
+ }
AI static void Store4(void* vptr, const SkNx& a, const SkNx& b, const SkNx& c, const SkNx& d) {
auto ptr = (char*)vptr;
Half::Store4(ptr, a.fLo, b.fLo, c.fLo, d.fLo);
@@ -168,6 +177,11 @@ struct SkNx<1,T> {
*b = Load(ptr + 1*sizeof(T));
*c = Load(ptr + 2*sizeof(T));
}
+ AI static void Load2(const void* vptr, SkNx* a, SkNx* b) {
+ auto ptr = (const char*)vptr;
+ *a = Load(ptr + 0*sizeof(T));
+ *b = Load(ptr + 1*sizeof(T));
+ }
AI static void Store4(void* vptr, const SkNx& a, const SkNx& b, const SkNx& c, const SkNx& d) {
auto ptr = (char*)vptr;
a.store(ptr + 0*sizeof(T));