| Index: src/opts/SkNx_neon.h
|
| diff --git a/src/opts/SkNx_neon.h b/src/opts/SkNx_neon.h
|
| index 1acd7a00f40ffc6df9591dc5b923157d4c64e3a8..52b2e73798e7eebb69144fb75288eba151553a23 100644
|
| --- a/src/opts/SkNx_neon.h
|
| +++ b/src/opts/SkNx_neon.h
|
| @@ -305,12 +305,20 @@ public:
|
| SkNx(const uint8x8_t& vec) : fVec(vec) {}
|
|
|
| SkNx() {}
|
| + SkNx(uint8_t a, uint8_t b, uint8_t c, uint8_t d) {
|
| + fVec = (uint8x8_t){a,b,c,d, 0,0,0,0};
|
| + }
|
| static SkNx Load(const void* ptr) {
|
| return (uint8x8_t)vld1_dup_u32((const uint32_t*)ptr);
|
| }
|
| void store(void* ptr) const {
|
| return vst1_lane_u32((uint32_t*)ptr, (uint32x2_t)fVec, 0);
|
| }
|
| + uint8_t operator[](int k) const {
|
| + SkASSERT(0 <= k && k < 4);
|
| + union { uint8x8_t v; uint8_t us[8]; } pun = {fVec};
|
| + return pun.us[k&3];
|
| + }
|
|
|
| // TODO as needed
|
|
|
|
|