Lines Matching refs:src
13 #include "src/core/SkColorSpacePriv.h"
14 #include "src/core/SkColorSpaceXformSteps.h"
15 #include "src/core/SkCpu.h"
16 #include "src/core/SkEnumerate.h"
17 #include "src/core/SkOpts.h"
18 #include "src/core/SkVM.h"
45 #include "src/core/SkLeanWindows.h"
1566 Color Builder::blend(SkBlendMode mode, Color src, Color dst) {
1575 fn(src.r, dst.r),
1576 fn(src.g, dst.g),
1577 fn(src.b, dst.b),
1578 fn(src.a, dst.a),
1584 fn(src.r, dst.r),
1585 fn(src.g, dst.g),
1586 fn(src.b, dst.b),
1587 mad(dst.a, 1-src.a, src.a), // srcover for alpha
1593 R + mma(src.r, 1-dst.a, dst.r, 1-src.a),
1594 G + mma(src.g, 1-dst.a, dst.g, 1-src.a),
1595 B + mma(src.b, 1-dst.a, dst.b, 1-src.a),
1596 mad(dst.a, 1-src.a, src.a), // srcover for alpha
1607 case SkBlendMode::kSrc: return src;
1610 case SkBlendMode::kDstOver: std::swap(src, dst); [[fallthrough]];
1613 return mad(d,1-src.a, s);
1616 case SkBlendMode::kDstIn: std::swap(src, dst); [[fallthrough]];
1622 case SkBlendMode::kDstOut: std::swap(src, dst); [[fallthrough]];
1629 case SkBlendMode::kDstATop: std::swap(src, dst); [[fallthrough]];
1632 return mma(s, dst.a, d, 1-src.a);
1637 return mma(s, 1-dst.a, d, 1-src.a);
1660 d * src.a));
1666 d * src.a));
1672 d * src.a)));
1683 src.a * (dst.a - d) / s),
1684 burn = src.a * (dst.a - mn) + mma(s, 1-dst.a, d, 1-src.a);
1687 , d * (1-src.a) + s));
1692 auto dodge = src.a * min(dst.a,
1693 d * src.a / (src.a - s))
1694 + mma(s, 1-dst.a, d, 1-src.a);
1697 , d * (1-src.a) + s));
1702 return mma(s, 1-dst.a, d, 1-src.a) +
1703 select(two(s) <= src.a,
1705 src.a * dst.a - two((dst.a - d) * (src.a - s)));
1710 return mma(s, 1-dst.a, d, 1-src.a) +
1713 src.a * dst.a - two((dst.a - d) * (src.a - s)));
1718 return mma(s, 1-dst.a, d, 1-src.a) + s * d;
1729 // 1. dark src?
1730 // 2. light src, dark dst?
1731 // 3. light src, light dst?
1734 auto darkSrc = d * ((s2-src.a) * (1-m) + src.a),
1740 liteSrc = dst.a * (s2 - src.a) * select(4*d <= dst.a, darkDst
1742 + d * src.a;
1743 return s * (1-dst.a) + d * (1-src.a) + select(s2 <= src.a, darkSrc
1748 skvm::F32 R = src.r * src.a,
1749 G = src.g * src.a,
1750 B = src.b * src.a;
1752 set_sat (&R, &G, &B, src.a * saturation(dst.r, dst.g, dst.b));
1753 set_lum (&R, &G, &B, src.a * luminance (dst.r, dst.g, dst.b));
1754 clip_color(&R, &G, &B, src.a * dst.a);
1760 skvm::F32 R = dst.r * src.a,
1761 G = dst.g * src.a,
1762 B = dst.b * src.a;
1764 set_sat (&R, &G, &B, dst.a * saturation(src.r, src.g, src.b));
1765 set_lum (&R, &G, &B, src.a * luminance (dst.r, dst.g, dst.b));
1766 clip_color(&R, &G, &B, src.a * dst.a);
1772 skvm::F32 R = src.r * dst.a,
1773 G = src.g * dst.a,
1774 B = src.b * dst.a;
1776 set_lum (&R, &G, &B, src.a * luminance(dst.r, dst.g, dst.b));
1777 clip_color(&R, &G, &B, src.a * dst.a);
1783 skvm::F32 R = dst.r * src.a,
1784 G = dst.g * src.a,
1785 B = dst.b * src.a;
1787 set_lum (&R, &G, &B, dst.a * luminance(src.r, src.g, src.b));
1788 clip_color(&R, &G, &B, dst.a * src.a);
2119 void Assembler::vpermps(Ymm dst, Ymm ix, Operand src) {
2120 this->op(0x66,0x380f,0x16, dst,ix,src);
2128 void Assembler::vmovdqa(Ymm dst, Operand src) { this->op(0x66,0x0f,0x6f, dst,src); }
2129 void Assembler::vmovups(Ymm dst, Operand src) { this->op( 0,0x0f,0x10, dst,src); }
2130 void Assembler::vmovups(Xmm dst, Operand src) { this->op( 0,0x0f,0x10, dst,src); }
2131 void Assembler::vmovups(Operand dst, Ymm src) { this->op( 0,0x0f,0x11, src,dst); }
2132 void Assembler::vmovups(Operand dst, Xmm src) { this->op( 0,0x0f,0x11, src,dst); }
2236 void Assembler::vpmovzxwd(Ymm dst, Operand src) { this->op(0x66,0x380f,0x33, dst,src); }
2237 void Assembler::vpmovzxbd(Ymm dst, Operand src) { this->op(0x66,0x380f,0x31, dst,src); }
2239 void Assembler::vmovq(Operand dst, Xmm src) { this->op(0x66,0x0f,0xd6, src,dst); }
2241 void Assembler::vmovd(Operand dst, Xmm src) { this->op(0x66,0x0f,0x7e, src,dst); }
2242 void Assembler::vmovd(Xmm dst, Operand src) { this->op(0x66,0x0f,0x6e, dst,src); }
2244 void Assembler::vpinsrd(Xmm dst, Xmm src, Operand y, int imm) {
2245 this->op(0x66,0x3a0f,0x22, dst,src,y);
2248 void Assembler::vpinsrw(Xmm dst, Xmm src, Operand y, int imm) {
2249 this->op(0x66,0x0f,0xc4, dst,src,y);
2252 void Assembler::vpinsrb(Xmm dst, Xmm src, Operand y, int imm) {
2253 this->op(0x66,0x3a0f,0x20, dst,src,y);
2257 void Assembler::vextracti128(Operand dst, Ymm src, int imm) {
2258 this->op(0x66,0x3a0f,0x39, src,dst);
2262 void Assembler::vpextrd(Operand dst, Xmm src, int imm) {
2263 this->op(0x66,0x3a0f,0x16, src,dst);
2267 void Assembler::vpextrw(Operand dst, Xmm src, int imm) {
2268 this->op(0x66,0x3a0f,0x15, src,dst);
2272 void Assembler::vpextrb(Operand dst, Xmm src, int imm) {
2273 this->op(0x66,0x3a0f,0x14, src,dst);
2426 void Assembler::ldrd(X dst, X src, int imm12) {
2427 this->op(0b11'111'0'01'01'000000000000, src, dst, (imm12 & 12_mask) << 10);
2429 void Assembler::ldrs(X dst, X src, int imm12) {
2430 this->op(0b10'111'0'01'01'000000000000, src, dst, (imm12 & 12_mask) << 10);
2432 void Assembler::ldrh(X dst, X src, int imm12) {
2433 this->op(0b01'111'0'01'01'000000000000, src, dst, (imm12 & 12_mask) << 10);
2435 void Assembler::ldrb(X dst, X src, int imm12) {
2436 this->op(0b00'111'0'01'01'000000000000, src, dst, (imm12 & 12_mask) << 10);
2439 void Assembler::ldrq(V dst, X src, int imm12) {
2440 this->op(0b00'111'1'01'11'000000000000, src, dst, (imm12 & 12_mask) << 10);
2442 void Assembler::ldrd(V dst, X src, int imm12) {
2443 this->op(0b11'111'1'01'01'000000000000, src, dst, (imm12 & 12_mask) << 10);
2445 void Assembler::ldrs(V dst, X src, int imm12) {
2446 this->op(0b10'111'1'01'01'000000000000, src, dst, (imm12 & 12_mask) << 10);
2448 void Assembler::ldrh(V dst, X src, int imm12) {
2449 this->op(0b01'111'1'01'01'000000000000, src, dst, (imm12 & 12_mask) << 10);
2451 void Assembler::ldrb(V dst, X src, int imm12) {
2452 this->op(0b00'111'1'01'01'000000000000, src, dst, (imm12 & 12_mask) << 10);
2455 void Assembler::strs(X src, X dst, int imm12) {
2456 this->op(0b10'111'0'01'00'000000000000, dst, src, (imm12 & 12_mask) << 10);
2459 void Assembler::strq(V src, X dst, int imm12) {
2460 this->op(0b00'111'1'01'10'000000000000, dst, src, (imm12 & 12_mask) << 10);
2462 void Assembler::strd(V src, X dst, int imm12) {
2463 this->op(0b11'111'1'01'00'000000000000, dst, src, (imm12 & 12_mask) << 10);
2465 void Assembler::strs(V src, X dst, int imm12) {
2466 this->op(0b10'111'1'01'00'000000000000, dst, src, (imm12 & 12_mask) << 10);
2468 void Assembler::strh(V src, X dst, int imm12) {
2469 this->op(0b01'111'1'01'00'000000000000, dst, src, (imm12 & 12_mask) << 10);
2471 void Assembler::strb(V src, X dst, int imm12) {
2472 this->op(0b00'111'1'01'00'000000000000, dst, src, (imm12 & 12_mask) << 10);
2475 void Assembler::movs(X dst, V src, int lane) {
2477 this->op(0b0'0'0'01110000'00000'0'01'1'1'1, src, dst, (imm5 & 5_mask) << 16);
2479 void Assembler::inss(V dst, X src, int lane) {
2481 this->op(0b0'1'0'01110000'00000'0'0011'1, src, dst, (imm5 & 5_mask) << 16);
2490 void Assembler::dup4s(V dst, X src) {
2491 this->op(0b0'1'0'01110000'00100'0'0001'1, src, dst);
2494 void Assembler::ld1r4s(V dst, X src) {
2495 this->op(0b0'1'0011010'1'0'00000'110'0'10, src, dst);
2497 void Assembler::ld1r8h(V dst, X src) {
2498 this->op(0b0'1'0011010'1'0'00000'110'0'01, src, dst);
2500 void Assembler::ld1r16b(V dst, X src) {
2501 this->op(0b0'1'0011010'1'0'00000'110'0'00, src, dst);
2504 void Assembler::ld24s(V dst, X src) { this->op(0b0'1'0011000'1'000000'1000'10, src, dst); }
2505 void Assembler::ld44s(V dst, X src) { this->op(0b0'1'0011000'1'000000'0000'10, src, dst); }
2506 void Assembler::st24s(V src, X dst) { this->op(0b0'1'0011000'0'000000'1000'10, dst, src); }
2507 void Assembler::st44s(V src, X dst) { this->op(0b0'1'0011000'0'000000'0000'10, dst, src); }
2509 void Assembler::ld24s(V dst, X src, int lane) {
2513 this->op(0b0'0'0011010'1'1'00000'100'0'00, src, dst, (Q<<30)|(S<<12));
2515 void Assembler::ld44s(V dst, X src, int lane) {
2518 this->op(0b0'0'0011010'1'1'00000'101'0'00, src, dst, (Q<<30)|(S<<12));