24 memcpy((
void*)&v, &splat, 16);
30 static_assert(
SK_A32_SHIFT == 24,
"This method assumes little-endian.");
31 return Sk4px(skvx::shuffle<3,3,3,3, 7,7,7,7, 11,11,11,11, 15,15,15,15>(fV));
38 memcpy((
void*)&v, px, 16);
43 memcpy((
void*)&v, px, 8);
48 memcpy((
void*)&v, px, 4);
56 return Sk4px(skvx::shuffle<0,0,0,0, 1,1,1,1, 2,2,2,2, 3,3,3,3>(
a));
115 template <
typename Fn>
127 dst += 8;
src += 8; n -= 8;
133 dst += 4;
src += 4; n -= 4;
137 dst += 2;
src += 2; n -= 2;
147 template <
typename Fn>
158 dst += 8;
src += 8; n -= 8;
164 dst += 4;
src += 4; n -= 4;
168 dst += 2;
src += 2; n -= 2;
178 template <
typename Fn>
189 dst += 8;
a += 8; n -= 8;
195 dst += 4;
a += 4; n -= 4;
199 dst += 2;
a += 2; n -= 2;
209 template <
typename Fn>
221 dst += 8;
src += 8;
a += 8; n -= 8;
227 dst += 4;
src += 4;
a += 4; n -= 4;
231 dst += 2;
src += 2;
a += 2; n -= 2;
Wide(const skvx::Vec< 16, uint16_t > &v)
Wide operator-(const Wide &o) const
Wide operator<<(int bits) const
Wide operator>>(int bits) const
Wide operator*(const Wide &o) const
Wide operator+(const Wide &o) const
Sk4px approxMulDiv255(const Sk4px &o) const
void store2(SkPMColor px[2]) const
static Sk4px Load2Alphas(const SkAlpha alphas[2])
void store1(SkPMColor px[1]) const
static void MapSrc(int n, SkPMColor *dst, const SkPMColor *src, const Fn &fn)
static void MapDstSrc(int n, SkPMColor *dst, const SkPMColor *src, const Fn &fn)
static Sk4px Load4Alphas(const SkAlpha alphas[4])
Sk4px thenElse(const Sk4px &t, const Sk4px &e) const
Sk4px saturatedAdd(const Sk4px &o) const
static Sk4px Load2(const SkPMColor px[2])
Sk4px operator-(const Sk4px &o) const
Wide operator*(const Sk4px &o) const
void store4(SkPMColor px[4]) const
static Sk4px DupPMColor(SkPMColor c)
Sk4px(const skvx::byte16 &v)
static void MapDstAlpha(int n, SkPMColor *dst, const SkAlpha *a, const Fn &fn)
Wide mulWiden(const skvx::byte16 &o) const
Sk4px operator&(const Sk4px &o) const
static Sk4px Load1(const SkPMColor px[1])
static Sk4px Load4(const SkPMColor px[4])
static void MapDstSrcAlpha(int n, SkPMColor *dst, const SkPMColor *src, const SkAlpha *a, const Fn &fn)
Sk4px operator<(const Sk4px &o) const
Sk4px operator+(const Sk4px &o) const
SIN Vec< N, uint16_t > mull(const Vec< N, uint8_t > &x, const Vec< N, uint8_t > &y)
SIN Vec< N, uint8_t > div255(const Vec< N, uint16_t > &x)
SINT std::enable_if_t< std::is_unsigned_v< T >, Vec< N, T > > saturated_add(const Vec< N, T > &x, const Vec< N, T > &y)
SIN Vec< N, uint8_t > approx_scale(const Vec< N, uint8_t > &x, const Vec< N, uint8_t > &y)
static SkString join(const CommandLineFlags::StringArray &)
static SKVX_ALWAYS_INLINE Vec Load(const void *ptr)