Lines Matching refs:rhs
49 int32_t SignedMulHigh32(int32_t lhs, int32_t rhs) {
50 int64_t const value = static_cast<int64_t>(lhs) * static_cast<int64_t>(rhs);
55 int32_t SignedMulHighAndAdd32(int32_t lhs, int32_t rhs, int32_t acc) {
57 bit_cast<uint32_t>(SignedMulHigh32(lhs, rhs)));
61 int32_t SignedDiv32(int32_t lhs, int32_t rhs) {
62 if (rhs == 0) return 0;
63 if (rhs == -1) return lhs == std::numeric_limits<int32_t>::min() ? lhs : -lhs;
64 return lhs / rhs;
68 int32_t SignedMod32(int32_t lhs, int32_t rhs) {
69 if (rhs == 0 || rhs == -1) return 0;
70 return lhs % rhs;
73 int64_t SignedSaturatedAdd64(int64_t lhs, int64_t rhs) {
75 // Underflow if {lhs + rhs < min}. In that case, return {min}.
76 if (rhs < 0 && lhs < limits::min() - rhs) return limits::min();
77 // Overflow if {lhs + rhs > max}. In that case, return {max}.
78 if (rhs >= 0 && lhs > limits::max() - rhs) return limits::max();
79 return lhs + rhs;
82 int64_t SignedSaturatedSub64(int64_t lhs, int64_t rhs) {
84 // Underflow if {lhs - rhs < min}. In that case, return {min}.
85 if (rhs > 0 && lhs < limits::min() + rhs) return limits::min();
86 // Overflow if {lhs - rhs > max}. In that case, return {max}.
87 if (rhs <= 0 && lhs > limits::max() + rhs) return limits::max();
88 return lhs - rhs;
91 bool SignedMulOverflow32(int32_t lhs, int32_t rhs, int32_t* val) {
93 int64_t result = int64_t{lhs} * int64_t{rhs};