103 template <
typename V>
104 __attribute__((always_inline))
static V
Do(T x, U
y) {
112 : CommonMaxOrMin<V>(IsValueNegative(x) ^ IsValueNegative(
y));
115 assert((FastIntegerArithmeticPromotion<T, U>::is_contained));
116 using Promotion =
typename FastIntegerArithmeticPromotion<T, U>::type;
117 return saturated_cast<V>(
static_cast<Promotion>(x) *
118 static_cast<Promotion>(
y));