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~