Lines Matching refs:U16

121     using U16 = uint16_t;
135 SI U16 pack(U32 v) { return (U16)v; }
136 SI U8 pack(U16 v) { return (U8)v; }
143 SI void load2(const uint16_t* ptr, size_t tail, U16* r, U16* g) {
147 SI void store2(uint16_t* ptr, size_t tail, U16 r, U16 g) {
151 SI void load3(const uint16_t* ptr, size_t tail, U16* r, U16* g, U16* b) {
156 SI void load4(const uint16_t* ptr, size_t tail, U16* r, U16* g, U16* b, U16* a) {
162 SI void store4(uint16_t* ptr, size_t tail, U16 r, U16 g, U16 b, U16 a) {
197 using U16 = V<uint16_t>;
208 SI U16 pack(U32 v) { return __builtin_convertvector(v, U16); }
209 SI U8 pack(U16 v) { return __builtin_convertvector(v, U8); }
242 SI void load2(const uint16_t* ptr, size_t tail, U16* r, U16* g) {
254 SI void store2(uint16_t* ptr, size_t tail, U16 r, U16 g) {
263 SI void load3(const uint16_t* ptr, size_t tail, U16* r, U16* g, U16* b) {
276 SI void load4(const uint16_t* ptr, size_t tail, U16* r, U16* g, U16* b, U16* a) {
291 SI void store4(uint16_t* ptr, size_t tail, U16 r, U16 g, U16 b, U16 a) {
352 using U16 = V<uint16_t>;
381 SI U16 pack(U32 v) {
385 SI U8 pack(U16 v) {
409 SI void load2(const uint16_t* ptr, size_t tail, U16* r, U16* g) {
410 U16 _0123, _4567;
440 SI void store2(uint16_t* ptr, size_t tail, U16 r, U16 g) {
471 SI void load3(const uint16_t* ptr, size_t tail, U16* r, U16* g, U16* b) {
512 SI void load4(const uint16_t* ptr, size_t tail, U16* r, U16* g, U16* b, U16* a) {
546 SI void store4(uint16_t* ptr, size_t tail, U16 r, U16 g, U16 b, U16 a) {
699 using U16 = V<uint16_t>;
713 SI U16 pack(U32 v) {
721 return sk_unaligned_load<U16>(&p); // We have two copies. Return (the lower) one.
723 SI U8 pack(U16 v) {
747 SI void load2(const uint16_t* ptr, size_t tail, U16* r, U16* g) {
768 *r = sk_unaligned_load<U16>(&R);
769 *g = sk_unaligned_load<U16>(&G);
771 SI void store2(uint16_t* ptr, size_t tail, U16 r, U16 g) {
789 SI void load3(const uint16_t* ptr, size_t tail, U16* r, U16* g, U16* b) {
820 *r = sk_unaligned_load<U16>(&R);
821 *g = sk_unaligned_load<U16>(&G);
822 *b = sk_unaligned_load<U16>(&B);
825 SI void load4(const uint16_t* ptr, size_t tail, U16* r, U16* g, U16* b, U16* a) {
844 *r = sk_unaligned_load<U16>((uint16_t*)&rg + 0);
845 *g = sk_unaligned_load<U16>((uint16_t*)&rg + 4);
846 *b = sk_unaligned_load<U16>((uint16_t*)&ba + 0);
847 *a = sk_unaligned_load<U16>((uint16_t*)&ba + 4);
850 SI void store4(uint16_t* ptr, size_t tail, U16 r, U16 g, U16 b, U16 a) {
934 SI U32 expand(U16 v) { return (U32)v; }
940 SI U32 expand(U16 v) { return __builtin_convertvector( v, U32); }
949 SI U16 bswap(U16 x) {
955 return sk_unaligned_load<U16>(&v);
999 SI F from_half(U16 h) {
1020 SI U16 to_half(F f) {
1197 SI F from_short(U16 s) {
1200 SI void from_565(U16 _565, F* r, F* g, F* b) {
1206 SI void from_4444(U16 _4444, F* r, F* g, F* b, F* a) {
1219 SI void from_88(U16 _88, F* r, F* g) {
1765 from_565(load<U16>(ptr, tail), &cr, &cg, &cb);
1814 from_565(load<U16>(ptr, tail), &cr, &cg, &cb);
1964 from_565(load<U16>(ptr, tail), &r,&g,&b);
1970 from_565(load<U16>(ptr, tail), &dr,&dg,&db);
1982 U16 px = pack( to_unorm(r, 31) << 11
1990 from_4444(load<U16>(ptr, tail), &r,&g,&b,&a);
1994 from_4444(load<U16>(ptr, tail), &dr,&dg,&db,&da);
2003 U16 px = pack( to_unorm(r, 15) << 12
2035 from_88(load<U16>(ptr, tail), &r, &g);
2041 from_88(load<U16>(ptr, tail), &dr, &dg);
2054 U16 px = pack( to_unorm(r, 255) | to_unorm(g, 255) << 8 );
2061 a = from_short(load<U16>(ptr, tail));
2066 da = from_short(load<U16>(ptr, tail));
2077 U16 px = pack(to_unorm(a, 65535));
2123 U16 R = pack(to_unorm(r, 65535)),
2158 U16 R,G,B,A;
2168 U16 R,G,B,A;
2180 U16 R,G,B,A;
2198 U16 R = bswap(pack(to_unorm(r, 65535))),
2209 U16 A = load<U16>((const uint16_t*)ptr, tail);
2218 U16 A = load<U16>((const uint16_t*)ptr, tail);
2236 U16 R,G;
2246 U16 R,G;
2258 U16 R,G;
2908 using U16 = uint16_t __attribute__((ext_vector_type(16)));
2917 using U16 = uint16_t __attribute__((ext_vector_type(8)));
2926 static const size_t N = sizeof(U16) / sizeof(uint16_t);
2934 U16 dr,dg,db,da;
2936 using Stage = void(ABI*)(Params*, void** program, U16 r, U16 g, U16 b, U16 a);
2940 U16 r, U16 g, U16 b, U16 a,
2941 U16 dr, U16 dg, U16 db, U16 da);
2970 static void ABI just_return(Params*, void**, U16,U16,U16,U16) {}
2972 static void ABI just_return(size_t,void**,size_t,size_t, U16,U16,U16,U16, U16,U16,U16,U16) {}
2988 static void ABI name(Params* params, void** program, U16 r, U16 g, U16 b, U16 a) { \
3001 U16& r, U16& g, U16& b, U16& a, \
3002 U16& dr, U16& dg, U16& db, U16& da); \
3003 static void ABI name(Params* params, void** program, U16 r, U16 g, U16 b, U16 a) { \
3012 U16& r, U16& g, U16& b, U16& a, \
3013 U16& dr, U16& dg, U16& db, U16& da)
3017 U16& r, U16& g, U16& b, U16& a, \
3018 U16& dr, U16& dg, U16& db, U16& da); \
3019 static void ABI name(Params* params, void** program, U16 r, U16 g, U16 b, U16 a) { \
3026 U16& r, U16& g, U16& b, U16& a, \
3027 U16& dr, U16& dg, U16& db, U16& da)
3032 U16 r, U16 g, U16 b, U16 a, \
3033 U16 dr, U16 dg, U16 db, U16 da) { \
3046 U16& r, U16& g, U16& b, U16& a, \
3047 U16& dr, U16& dg, U16& db, U16& da); \
3049 U16 r, U16 g, U16 b, U16 a, \
3050 U16 dr, U16 dg, U16 db, U16 da) { \
3058 U16& r, U16& g, U16& b, U16& a, \
3059 U16& dr, U16& dg, U16& db, U16& da)
3063 U16& r, U16& g, U16& b, U16& a, \
3064 U16& dr, U16& dg, U16& db, U16& da); \
3066 U16 r, U16 g, U16 b, U16 a, \
3067 U16 dr, U16 dg, U16 db, U16 da) { \
3073 U16& r, U16& g, U16& b, U16& a, \
3074 U16& dr, U16& dg, U16& db, U16& da)
3097 SI U16 div255(U16 v) {
3111 SI U16 div255_accurate(U16 v) {
3122 SI U16 inv(U16 v) { return 255-v; }
3124 SI U16 if_then_else(I16 c, U16 t, U16 e) { return (t & c) | (e & ~c); }
3127 SI U16 max(U16 x, U16 y) { return if_then_else(x < y, y, x); }
3128 SI U16 min(U16 x, U16 y) { return if_then_else(x < y, x, y); }
3130 SI U16 from_float(float f) { return f * 255.0f + 0.5f; }
3132 SI U16 lerp(U16 from, U16 to, U16 t) { return div255( from*inv(t) + to*t ); }
3260 SI U16 constrained_add(I16 a, U16 b) {
3397 SI U16 name##_channel(U16 s, U16 d, U16 sa, U16 da); \
3404 SI U16 name##_channel(U16 s, U16 d, U16 sa, U16 da)
3424 SI U16 name##_channel(U16 s, U16 d, U16 sa, U16 da); \
3431 SI U16 name##_channel(U16 s, U16 d, U16 sa, U16 da)
3567 SI void from_8888(U32 rgba, U16* r, U16* g, U16* b, U16* a) {
3576 auto cast_U16 = [](U32 v) -> U16 {
3582 auto cast_U16 = [](U32 v) -> U16 {
3583 return cast<U16>(v);
3592 SI void load_8888_(const uint32_t* ptr, size_t tail, U16* r, U16* g, U16* b, U16* a) {
3605 *r = cast<U16>(rgba.val[0]);
3606 *g = cast<U16>(rgba.val[1]);
3607 *b = cast<U16>(rgba.val[2]);
3608 *a = cast<U16>(rgba.val[3]);
3613 SI void store_8888_(uint32_t* ptr, size_t tail, U16 r, U16 g, U16 b, U16 a) {
3654 SI void from_565(U16 rgb, U16* r, U16* g, U16* b) {
3656 U16 R = (rgb >> 11) & 31,
3665 SI void load_565_(const uint16_t* ptr, size_t tail, U16* r, U16* g, U16* b) {
3666 from_565(load<U16>(ptr, tail), r,g,b);
3668 SI void store_565_(uint16_t* ptr, size_t tail, U16 r, U16 g, U16 b) {
3672 U16 R = (r * 9 + 36) / 74, // 9/74 ≈ 31/255, plus 36/74, about half.
3695 from_565(gather<U16>(ptr, ix), &r, &g, &b);
3699 SI void from_4444(U16 rgba, U16* r, U16* g, U16* b, U16* a) {
3701 U16 R = (rgba >> 12) & 15,
3712 SI void load_4444_(const uint16_t* ptr, size_t tail, U16* r, U16* g, U16* b, U16* a) {
3713 from_4444(load<U16>(ptr, tail), r,g,b,a);
3715 SI void store_4444_(uint16_t* ptr, size_t tail, U16 r, U16 g, U16 b, U16 a) {
3717 U16 R = (r + 8) / 17,
3740 from_4444(gather<U16>(ptr, ix), &r,&g,&b,&a);
3743 SI void from_88(U16 rg, U16* r, U16* g) {
3748 SI void load_88_(const uint16_t* ptr, size_t tail, U16* r, U16* g) {
3761 *r = cast<U16>(rg.val[0]);
3762 *g = cast<U16>(rg.val[1]);
3764 from_88(load<U16>(ptr, tail), r,g);
3768 SI void store_88_(uint16_t* ptr, size_t tail, U16 r, U16 g) {
3785 store(ptr, tail, cast<U16>(r | (g<<8)) << 0);
3805 from_88(gather<U16>(ptr, ix), &r, &g);
3812 SI U16 load_8(const uint8_t* ptr, size_t tail) {
3813 return cast<U16>(load<U8>(ptr, tail));
3815 SI void store_8(uint8_t* ptr, size_t tail, U16 v) {
3834 a = cast<U16>(gather<U8>(ptr, ix));
3856 r = sk_unaligned_load<U16>(ptr + 0*N);
3857 g = sk_unaligned_load<U16>(ptr + 1*N);
3858 b = sk_unaligned_load<U16>(ptr + 2*N);
3859 a = sk_unaligned_load<U16>(ptr + 3*N);
3871 dr = sk_unaligned_load<U16>(ptr + 0*N);
3872 dg = sk_unaligned_load<U16>(ptr + 1*N);
3873 db = sk_unaligned_load<U16>(ptr + 2*N);
3874 da = sk_unaligned_load<U16>(ptr + 3*N);
3886 U16 c = from_float(*f);
3893 U16 c = from_float(*f);
3900 auto c = sk_unaligned_load<U16>(scales);
3908 auto c = sk_unaligned_load<U16>(scales);
3916 U16 c = load_8(ptr_at_xy<const uint8_t>(ctx, dx,dy), tail);
3923 U16 c = load_8(ptr_at_xy<const uint8_t>(ctx, dx,dy), tail);
3931 SI U16 alpha_coverage_from_rgb_coverage(U16 a, U16 da, U16 cr, U16 cg, U16 cb) {
3936 U16 cr,cg,cb;
3938 U16 ca = alpha_coverage_from_rgb_coverage(a,da, cr,cg,cb);
3946 U16 cr,cg,cb;
3948 U16 ca = alpha_coverage_from_rgb_coverage(a,da, cr,cg,cb);
3957 U16 mul = load_8(ptr_at_xy<const uint8_t>(&ctx->mul, dx,dy), tail),
3995 auto mask = sk_unaligned_load<U16>(ctx->mask);
4003 U16* r, U16* g, U16* b, U16* a) {
4004 auto round = [](F x) { return cast<U16>(x * 255.0f + 0.5f); };
4015 U16* r, U16* g, U16* b, U16* a) {
4126 auto lerpX = [&](U16 left, U16 right) -> U16 {
4128 U16 middle = (right + left) << 7;
4137 U16 v2 = constrained_add(scaled_mult(tx, width), middle) + 1;
4145 U16 leftR, leftG, leftB, leftA;
4149 U16 rightR, rightG, rightB, rightA;
4152 U16 topR = lerpX(leftR, rightR),
4163 U16 bottomR = lerpX(leftR, rightR),
4170 auto lerpY = [&](U16 top, U16 bottom) -> U16 {
4172 U16 middle = bottom + top;
4174 U16 blend = constrained_add(scaled_mult(ty, width), middle) + 0x80;
4230 U16* o[] = {&r, &g, &b, &a};
4240 case '0': *o[i] = U16(0); break;
4241 case '1': *o[i] = U16(255); break;