Lines Matching refs:AI
19 AI static float32x4_t emulate_vrndmq_f32(float32x4_t v) { in emulate_vrndmq_f32()
24 AI static float32x2_t emulate_vrndm_f32(float32x2_t v) { in emulate_vrndm_f32()
33 AI SkNx(float32x2_t vec) : fVec(vec) {} in SkNx()
35 AI SkNx() {} in SkNx()
36 AI SkNx(float val) : fVec(vdup_n_f32(val)) {} in SkNx()
37 AI SkNx(float a, float b) { fVec = (float32x2_t) { a, b }; } in SkNx()
39 AI static SkNx Load(const void* ptr) { return vld1_f32((const float*)ptr); } in Load()
40 AI void store(void* ptr) const { vst1_f32((float*)ptr, fVec); } in store()
42 AI static void Load2(const void* ptr, SkNx* x, SkNx* y) { in Load2()
48 AI static void Store2(void* dst, const SkNx& a, const SkNx& b) { in Store2()
56 AI static void Store3(void* dst, const SkNx& a, const SkNx& b, const SkNx& c) { in Store3()
65 AI static void Store4(void* dst, const SkNx& a, const SkNx& b, const SkNx& c, const SkNx& d) { in Store4()
75 AI SkNx invert() const { in invert()
81 AI SkNx operator - () const { return vneg_f32(fVec); }
83 AI SkNx operator + (const SkNx& o) const { return vadd_f32(fVec, o.fVec); }
84 AI SkNx operator - (const SkNx& o) const { return vsub_f32(fVec, o.fVec); }
85 AI SkNx operator * (const SkNx& o) const { return vmul_f32(fVec, o.fVec); }
86 AI SkNx operator / (const SkNx& o) const {
97 AI SkNx operator==(const SkNx& o) const { return vreinterpret_f32_u32(vceq_f32(fVec, o.fVec)); }
98 AI SkNx operator <(const SkNx& o) const { return vreinterpret_f32_u32(vclt_f32(fVec, o.fVec)); }
99 AI SkNx operator >(const SkNx& o) const { return vreinterpret_f32_u32(vcgt_f32(fVec, o.fVec)); }
100 AI SkNx operator<=(const SkNx& o) const { return vreinterpret_f32_u32(vcle_f32(fVec, o.fVec)); }
101 AI SkNx operator>=(const SkNx& o) const { return vreinterpret_f32_u32(vcge_f32(fVec, o.fVec)); }
102 AI SkNx operator!=(const SkNx& o) const {
106 AI static SkNx Min(const SkNx& l, const SkNx& r) { return vmin_f32(l.fVec, r.fVec); } in Min()
107 AI static SkNx Max(const SkNx& l, const SkNx& r) { return vmax_f32(l.fVec, r.fVec); } in Max()
109 AI SkNx abs() const { return vabs_f32(fVec); } in abs()
110 AI SkNx floor() const { in floor()
118 AI SkNx rsqrt() const { in rsqrt()
123 AI SkNx sqrt() const { in sqrt()
134 AI float operator[](int k) const {
140 AI bool allTrue() const { in allTrue()
148 AI bool anyTrue() const { in anyTrue()
157 AI SkNx thenElse(const SkNx& t, const SkNx& e) const { in thenElse()
167 AI SkNx(float32x4_t vec) : fVec(vec) {} in SkNx()
169 AI SkNx() {} in SkNx()
170 AI SkNx(float val) : fVec(vdupq_n_f32(val)) {} in SkNx()
171 AI SkNx(float a, float b, float c, float d) { fVec = (float32x4_t) { a, b, c, d }; } in SkNx()
173 AI static SkNx Load(const void* ptr) { return vld1q_f32((const float*)ptr); } in Load()
174 AI void store(void* ptr) const { vst1q_f32((float*)ptr, fVec); } in store()
176 AI static void Load2(const void* ptr, SkNx* x, SkNx* y) { in Load2()
182 AI static void Load4(const void* ptr, SkNx* r, SkNx* g, SkNx* b, SkNx* a) { in Load4()
189 AI static void Store4(void* dst, const SkNx& r, const SkNx& g, const SkNx& b, const SkNx& a) { in Store4()
199 AI SkNx invert() const { in invert()
205 AI SkNx operator - () const { return vnegq_f32(fVec); }
207 AI SkNx operator + (const SkNx& o) const { return vaddq_f32(fVec, o.fVec); }
208 AI SkNx operator - (const SkNx& o) const { return vsubq_f32(fVec, o.fVec); }
209 AI SkNx operator * (const SkNx& o) const { return vmulq_f32(fVec, o.fVec); }
210 AI SkNx operator / (const SkNx& o) const {
221 AI SkNx operator==(const SkNx& o) const {return vreinterpretq_f32_u32(vceqq_f32(fVec, o.fVec));}
222 AI SkNx operator <(const SkNx& o) const {return vreinterpretq_f32_u32(vcltq_f32(fVec, o.fVec));}
223 AI SkNx operator >(const SkNx& o) const {return vreinterpretq_f32_u32(vcgtq_f32(fVec, o.fVec));}
224 AI SkNx operator<=(const SkNx& o) const {return vreinterpretq_f32_u32(vcleq_f32(fVec, o.fVec));}
225 AI SkNx operator>=(const SkNx& o) const {return vreinterpretq_f32_u32(vcgeq_f32(fVec, o.fVec));}
226 AI SkNx operator!=(const SkNx& o) const {
230 AI static SkNx Min(const SkNx& l, const SkNx& r) { return vminq_f32(l.fVec, r.fVec); } in Min()
231 AI static SkNx Max(const SkNx& l, const SkNx& r) { return vmaxq_f32(l.fVec, r.fVec); } in Max()
233 AI SkNx abs() const { return vabsq_f32(fVec); } in abs()
234 AI SkNx floor() const { in floor()
243 AI SkNx rsqrt() const { in rsqrt()
248 AI SkNx sqrt() const { in sqrt()
259 AI float operator[](int k) const {
265 AI float min() const { in min()
274 AI float max() const { in max()
283 AI bool allTrue() const { in allTrue()
292 AI bool anyTrue() const { in anyTrue()
302 AI SkNx thenElse(const SkNx& t, const SkNx& e) const { in thenElse()
310 AI static Sk4f SkNx_fma(const Sk4f& f, const Sk4f& m, const Sk4f& a) { in SkNx_fma()
321 AI SkNx(const uint16x4_t& vec) : fVec(vec) {} in SkNx()
323 AI SkNx() {} in SkNx()
324 AI SkNx(uint16_t val) : fVec(vdup_n_u16(val)) {} in SkNx()
325 AI SkNx(uint16_t a, uint16_t b, uint16_t c, uint16_t d) { in SkNx()
329 AI static SkNx Load(const void* ptr) { return vld1_u16((const uint16_t*)ptr); } in Load()
330 AI void store(void* ptr) const { vst1_u16((uint16_t*)ptr, fVec); } in store()
332 AI static void Load4(const void* ptr, SkNx* r, SkNx* g, SkNx* b, SkNx* a) { in Load4()
339 AI static void Load3(const void* ptr, SkNx* r, SkNx* g, SkNx* b) { in Load3()
345 AI static void Store4(void* dst, const SkNx& r, const SkNx& g, const SkNx& b, const SkNx& a) { in Store4()
355 AI SkNx operator + (const SkNx& o) const { return vadd_u16(fVec, o.fVec); }
356 AI SkNx operator - (const SkNx& o) const { return vsub_u16(fVec, o.fVec); }
357 AI SkNx operator * (const SkNx& o) const { return vmul_u16(fVec, o.fVec); }
358 AI SkNx operator & (const SkNx& o) const { return vand_u16(fVec, o.fVec); }
359 AI SkNx operator | (const SkNx& o) const { return vorr_u16(fVec, o.fVec); }
361 AI SkNx operator << (int bits) const { return fVec << SkNx(bits).fVec; }
362 AI SkNx operator >> (int bits) const { return fVec >> SkNx(bits).fVec; }
364 AI static SkNx Min(const SkNx& a, const SkNx& b) { return vmin_u16(a.fVec, b.fVec); } in Min()
366 AI uint16_t operator[](int k) const {
372 AI SkNx thenElse(const SkNx& t, const SkNx& e) const { in thenElse()
382 AI SkNx(const uint16x8_t& vec) : fVec(vec) {} in SkNx()
384 AI SkNx() {} in SkNx()
385 AI SkNx(uint16_t val) : fVec(vdupq_n_u16(val)) {} in SkNx()
386 AI static SkNx Load(const void* ptr) { return vld1q_u16((const uint16_t*)ptr); } in Load()
388 AI SkNx(uint16_t a, uint16_t b, uint16_t c, uint16_t d, in SkNx()
393 AI void store(void* ptr) const { vst1q_u16((uint16_t*)ptr, fVec); } in store()
395 AI SkNx operator + (const SkNx& o) const { return vaddq_u16(fVec, o.fVec); }
396 AI SkNx operator - (const SkNx& o) const { return vsubq_u16(fVec, o.fVec); }
397 AI SkNx operator * (const SkNx& o) const { return vmulq_u16(fVec, o.fVec); }
398 AI SkNx operator & (const SkNx& o) const { return vandq_u16(fVec, o.fVec); }
399 AI SkNx operator | (const SkNx& o) const { return vorrq_u16(fVec, o.fVec); }
401 AI SkNx operator << (int bits) const { return fVec << SkNx(bits).fVec; }
402 AI SkNx operator >> (int bits) const { return fVec >> SkNx(bits).fVec; }
404 AI static SkNx Min(const SkNx& a, const SkNx& b) { return vminq_u16(a.fVec, b.fVec); } in Min()
406 AI uint16_t operator[](int k) const {
412 AI SkNx mulHi(const SkNx& m) const { in mulHi()
419 AI SkNx thenElse(const SkNx& t, const SkNx& e) const { in thenElse()
431 AI SkNx(const uint8x8_t& vec) : fVec(vec) {} in SkNx()
433 AI SkNx() {} in SkNx()
434 AI SkNx(uint8_t a, uint8_t b, uint8_t c, uint8_t d) { in SkNx()
437 AI static SkNx Load(const void* ptr) { in Load()
440 AI void store(void* ptr) const { in store()
443 AI uint8_t operator[](int k) const {
457 AI SkNx(const uint8x8_t& vec) : fVec(vec) {} in SkNx()
459 AI SkNx() {} in SkNx()
460 AI SkNx(uint8_t val) : fVec(vdup_n_u8(val)) {} in SkNx()
461 AI SkNx(uint8_t a, uint8_t b, uint8_t c, uint8_t d, in SkNx()
466 AI static SkNx Load(const void* ptr) { return vld1_u8((const uint8_t*)ptr); } in Load()
467 AI void store(void* ptr) const { vst1_u8((uint8_t*)ptr, fVec); } in store()
469 AI uint8_t operator[](int k) const {
481 AI SkNx(const uint8x16_t& vec) : fVec(vec) {} in SkNx()
483 AI SkNx() {} in SkNx()
484 AI SkNx(uint8_t val) : fVec(vdupq_n_u8(val)) {} in SkNx()
485 AI SkNx(uint8_t a, uint8_t b, uint8_t c, uint8_t d, in SkNx()
492 AI static SkNx Load(const void* ptr) { return vld1q_u8((const uint8_t*)ptr); } in Load()
493 AI void store(void* ptr) const { vst1q_u8((uint8_t*)ptr, fVec); } in store()
495 AI SkNx saturatedAdd(const SkNx& o) const { return vqaddq_u8(fVec, o.fVec); } in saturatedAdd()
497 AI SkNx operator + (const SkNx& o) const { return vaddq_u8(fVec, o.fVec); }
498 AI SkNx operator - (const SkNx& o) const { return vsubq_u8(fVec, o.fVec); }
499 AI SkNx operator & (const SkNx& o) const { return vandq_u8(fVec, o.fVec); }
501 AI static SkNx Min(const SkNx& a, const SkNx& b) { return vminq_u8(a.fVec, b.fVec); } in Min()
502 AI SkNx operator < (const SkNx& o) const { return vcltq_u8(fVec, o.fVec); }
504 AI uint8_t operator[](int k) const {
510 AI SkNx thenElse(const SkNx& t, const SkNx& e) const { in thenElse()
520 AI SkNx(const int32x4_t& vec) : fVec(vec) {} in SkNx()
522 AI SkNx() {} in SkNx()
523 AI SkNx(int32_t v) { in SkNx()
526 AI SkNx(int32_t a, int32_t b, int32_t c, int32_t d) { in SkNx()
529 AI static SkNx Load(const void* ptr) { in Load()
532 AI void store(void* ptr) const { in store()
535 AI int32_t operator[](int k) const {
541 AI SkNx operator + (const SkNx& o) const { return vaddq_s32(fVec, o.fVec); }
542 AI SkNx operator - (const SkNx& o) const { return vsubq_s32(fVec, o.fVec); }
543 AI SkNx operator * (const SkNx& o) const { return vmulq_s32(fVec, o.fVec); }
545 AI SkNx operator & (const SkNx& o) const { return vandq_s32(fVec, o.fVec); }
546 AI SkNx operator | (const SkNx& o) const { return vorrq_s32(fVec, o.fVec); }
547 AI SkNx operator ^ (const SkNx& o) const { return veorq_s32(fVec, o.fVec); }
549 AI SkNx operator << (int bits) const { return fVec << SkNx(bits).fVec; }
550 AI SkNx operator >> (int bits) const { return fVec >> SkNx(bits).fVec; }
552 AI SkNx operator == (const SkNx& o) const {
555 AI SkNx operator < (const SkNx& o) const {
558 AI SkNx operator > (const SkNx& o) const {
562 AI static SkNx Min(const SkNx& a, const SkNx& b) { return vminq_s32(a.fVec, b.fVec); } in Min()
563 AI static SkNx Max(const SkNx& a, const SkNx& b) { return vmaxq_s32(a.fVec, b.fVec); } in Max()
566 AI SkNx thenElse(const SkNx& t, const SkNx& e) const { in thenElse()
570 AI SkNx abs() const { return vabsq_s32(fVec); } in abs()
578 AI SkNx(const uint32x4_t& vec) : fVec(vec) {} in SkNx()
580 AI SkNx() {} in SkNx()
581 AI SkNx(uint32_t v) { in SkNx()
584 AI SkNx(uint32_t a, uint32_t b, uint32_t c, uint32_t d) { in SkNx()
587 AI static SkNx Load(const void* ptr) { in Load()
590 AI void store(void* ptr) const { in store()
593 AI uint32_t operator[](int k) const {
599 AI SkNx operator + (const SkNx& o) const { return vaddq_u32(fVec, o.fVec); }
600 AI SkNx operator - (const SkNx& o) const { return vsubq_u32(fVec, o.fVec); }
601 AI SkNx operator * (const SkNx& o) const { return vmulq_u32(fVec, o.fVec); }
603 AI SkNx operator & (const SkNx& o) const { return vandq_u32(fVec, o.fVec); }
604 AI SkNx operator | (const SkNx& o) const { return vorrq_u32(fVec, o.fVec); }
605 AI SkNx operator ^ (const SkNx& o) const { return veorq_u32(fVec, o.fVec); }
607 AI SkNx operator << (int bits) const { return fVec << SkNx(bits).fVec; }
608 AI SkNx operator >> (int bits) const { return fVec >> SkNx(bits).fVec; }
610 AI SkNx operator == (const SkNx& o) const { return vceqq_u32(fVec, o.fVec); }
611 AI SkNx operator < (const SkNx& o) const { return vcltq_u32(fVec, o.fVec); }
612 AI SkNx operator > (const SkNx& o) const { return vcgtq_u32(fVec, o.fVec); }
614 AI static SkNx Min(const SkNx& a, const SkNx& b) { return vminq_u32(a.fVec, b.fVec); } in Min()
617 AI SkNx mulHi(const SkNx& m) const { in mulHi()
624 AI SkNx thenElse(const SkNx& t, const SkNx& e) const { in thenElse()
631 template<> AI /*static*/ Sk4i SkNx_cast<int32_t, float>(const Sk4f& src) {
635 template<> AI /*static*/ Sk4f SkNx_cast<float, int32_t>(const Sk4i& src) {
638 template<> AI /*static*/ Sk4f SkNx_cast<float, uint32_t>(const Sk4u& src) {
642 template<> AI /*static*/ Sk4h SkNx_cast<uint16_t, float>(const Sk4f& src) {
646 template<> AI /*static*/ Sk4f SkNx_cast<float, uint16_t>(const Sk4h& src) {
650 template<> AI /*static*/ Sk4b SkNx_cast<uint8_t, float>(const Sk4f& src) {
656 template<> AI /*static*/ Sk4u SkNx_cast<uint32_t, uint8_t>(const Sk4b& src) {
661 template<> AI /*static*/ Sk4i SkNx_cast<int32_t, uint8_t>(const Sk4b& src) {
665 template<> AI /*static*/ Sk4f SkNx_cast<float, uint8_t>(const Sk4b& src) {
669 template<> AI /*static*/ Sk16b SkNx_cast<uint8_t, float>(const Sk16f& src) {
682 template<> AI /*static*/ Sk8b SkNx_cast<uint8_t, int32_t>(const Sk8i& src) {
691 template<> AI /*static*/ Sk4h SkNx_cast<uint16_t, uint8_t>(const Sk4b& src) {
695 template<> AI /*static*/ Sk8h SkNx_cast<uint16_t, uint8_t>(const Sk8b& src) {
699 template<> AI /*static*/ Sk4b SkNx_cast<uint8_t, uint16_t>(const Sk4h& src) {
703 template<> AI /*static*/ Sk8b SkNx_cast<uint8_t, uint16_t>(const Sk8h& src) {
707 template<> AI /*static*/ Sk4b SkNx_cast<uint8_t, int32_t>(const Sk4i& src) {
712 template<> AI /*static*/ Sk4b SkNx_cast<uint8_t, uint32_t>(const Sk4u& src) {
717 template<> AI /*static*/ Sk4i SkNx_cast<int32_t, uint16_t>(const Sk4h& src) {
721 template<> AI /*static*/ Sk4h SkNx_cast<uint16_t, int32_t>(const Sk4i& src) {
725 template<> AI /*static*/ Sk4i SkNx_cast<int32_t, uint32_t>(const Sk4u& src) {
729 AI static Sk4i Sk4f_round(const Sk4f& x) { in Sk4f_round()