From 507ef6d68115ae9e6d884bb36436a1463523d893 Mon Sep 17 00:00:00 2001 From: mtklein Date: Sun, 31 Jan 2016 08:02:47 -0800 Subject: SkNx Load/store: take any pointer. This means we can remove a lot of explicit casts in code that uses SkNx. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1650653002 CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Review URL: https://codereview.chromium.org/1650653002 --- src/core/SkNx.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/core/SkNx.h') diff --git a/src/core/SkNx.h b/src/core/SkNx.h index 2bbd495ce5..4cb15dffe7 100644 --- a/src/core/SkNx.h +++ b/src/core/SkNx.h @@ -32,7 +32,8 @@ public: SkNx() {} SkNx(const SkNx& lo, const SkNx& hi) : fLo(lo), fHi(hi) {} SkNx(T val) : fLo(val), fHi(val) {} - static SkNx Load(const T vals[N]) { + static SkNx Load(const void* ptr) { + auto vals = (const T*)ptr; return SkNx(SkNx::Load(vals), SkNx::Load(vals+N/2)); } @@ -43,7 +44,8 @@ public: T i, T j, T k, T l, T m, T n, T o, T p) : fLo(a,b,c,d, e,f,g,h), fHi(i,j,k,l, m,n,o,p) { REQUIRE(N==16); } - void store(T vals[N]) const { + void store(void* ptr) const { + auto vals = (T*)ptr; fLo.store(vals); fHi.store(vals+N/2); } @@ -108,9 +110,15 @@ class SkNx<1,T> { public: SkNx() {} SkNx(T val) : fVal(val) {} - static SkNx Load(const T vals[1]) { return SkNx(vals[0]); } + static SkNx Load(const void* ptr) { + auto vals = (const T*)ptr; + return SkNx(vals[0]); + } - void store(T vals[1]) const { vals[0] = fVal; } + void store(void* ptr) const { + auto vals = (T*) ptr; + vals[0] = fVal; + } SkNx saturatedAdd(const SkNx& o) const { SkASSERT((T)(~0) > 0); // TODO: support signed T -- cgit v1.2.3