On 02/13/2018 07:20 AM, Peter Maydell wrote:
>> +static FloatParts mul_floats(FloatParts a, FloatParts b, float_status *s)
>> +{
>> + bool sign = a.sign ^ b.sign;
>> +
>> + if (a.cls == float_class_normal && b.cls == float_class_normal) {
>> + uint64_t hi, lo;
>> + int exp = a.exp + b.exp;
>> +
>> + mul64To128(a.frac, b.frac, &hi, &lo);
>
> It seems a shame that we previously were able to use a
> 32x32->64 multiply for the float32 case, and now we have to
> do an expensive 64x64->128 multiply regardless...
To be fair, I've proposed two different solutions addressing that -- c++
templates and glibc macros -- and you like neither. Is there a third
alternative that does not involve code duplication?
r~