37static inline constexpr int32_t
SkLeftShift(int32_t value, int32_t shift) {
38 return (int32_t) ((uint32_t)
value << shift);
41static inline constexpr int64_t
SkLeftShift(int64_t value, int32_t shift) {
42 return (int64_t) ((uint64_t)
value << shift);
51template <
typename T>
constexpr inline bool SkIsPow2(
T value) {
65 unsigned prod =
a*
b + (1 << (shift - 1));
66 return (prod + (prod >> shift)) >> shift;
static unsigned SkMul16ShiftRound(U16CPU a, U16CPU b, int shift)
static constexpr int64_t SK_MaxS64
static U8CPU SkMulDiv255Round(U16CPU a, U16CPU b)
static constexpr int32_t SkLeftShift(int32_t value, int32_t shift)
constexpr bool SkIsPow2(T value)
static constexpr int32_t SK_NaN32
static int64_t sk_64_mul(int64_t a, int64_t b)
static constexpr int32_t SK_MinS32
static constexpr int16_t SK_MaxS16
static constexpr int64_t SK_MinS64
static constexpr int32_t SK_MaxS32
static constexpr int16_t SK_MinS16