16 int64_t
const value =
static_cast<int64_t
>(lhs) *
static_cast<int64_t
>(rhs);
25 uint64_t u0 = u & 0xFFFFFFFF;
27 uint64_t v0 = v & 0xFFFFFFFF;
30 uint64_t w0 = u0 * v0;
31 int64_t t = u1 * v0 + (w0 >> 32);
32 int64_t w1 = t & 0xFFFFFFFF;
36 return u1 * v1 + w2 + (w1 >> 32);
42 uint64_t u0 = u & 0xFFFFFFFF;
43 uint64_t u1 = u >> 32;
44 uint64_t v0 = v & 0xFFFFFFFF;
45 uint64_t v1 = v >> 32;
47 uint64_t w0 = u0 * v0;
48 uint64_t t = u1 * v0 + (w0 >> 32);
49 uint64_t w1 = t & 0xFFFFFFFFLL;
50 uint64_t w2 = t >> 32;
53 return u1 * v1 + w2 + (w1 >> 32);
57 uint64_t
const value =
58 static_cast<uint64_t
>(lhs) *
static_cast<uint64_t
>(rhs);
59 return static_cast<uint32_t
>(value >> 32u);
70 if (rhs == 0)
return 0;
71 if (rhs == -1)
return lhs == std::numeric_limits<int32_t>::min() ? lhs : -lhs;
76 if (rhs == 0)
return 0;
77 if (rhs == -1)
return lhs == std::numeric_limits<int64_t>::min() ? lhs : -lhs;
82 if (rhs == 0 || rhs == -1)
return 0;
87 if (rhs == 0 || rhs == -1)
return 0;
92 using limits = std::numeric_limits<int64_t>;
94 if (rhs < 0 && lhs < limits::min() - rhs)
return limits::min();
96 if (rhs >= 0 && lhs > limits::max() - rhs)
return limits::max();
101 using limits = std::numeric_limits<int64_t>;
103 if (rhs > 0 && lhs < limits::min() + rhs)
return limits::min();
105 if (rhs <= 0 && lhs > limits::max() + rhs)
return limits::max();
int32_t SignedMulHighAndAdd32(int32_t lhs, int32_t rhs, int32_t acc)
int32_t SignedMulHigh32(int32_t lhs, int32_t rhs)
int32_t SignedDiv32(int32_t lhs, int32_t rhs)
int64_t SignedDiv64(int64_t lhs, int64_t rhs)
uint32_t UnsignedMulHigh32(uint32_t lhs, uint32_t rhs)
int64_t SignedMulHigh64(int64_t u, int64_t v)
int64_t SignedMod64(int64_t lhs, int64_t rhs)
int32_t SignedMod32(int32_t lhs, int32_t rhs)
int64_t SignedSaturatedSub64(int64_t lhs, int64_t rhs)
uint64_t UnsignedMulHigh64(uint64_t u, uint64_t v)
int64_t SignedSaturatedAdd64(int64_t lhs, int64_t rhs)
V8_INLINE Dest bit_cast(Source const &source)