diff options
author | Mike Klein <mtklein@chromium.org> | 2017-11-30 12:07:20 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-12-01 19:26:02 +0000 |
commit | 213d8214628ec7a844f00b5b7bb63b9bf02d7303 (patch) | |
tree | d1ec7aece9b35d43d8f41046f70dc32730dd7884 /src/core/SkNx.h | |
parent | a158e174582c96c948c68b3f48d21c2e24fbad78 (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.h | 14 |
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)); |