On 9/17/19 2:41 PM, Alex Bennée wrote: > + /* From https://bugs.launchpad.net/qemu/+bug/1841491 */ > + add_f32_const(0x1.ffffffffffffcp-1022); > + add_f32_const(0x1.0000000000001p-1); > + add_f32_const(0x0.0000000000001p-1022);
These three constants do not fit in float32. > + add_f32_const(0x8p-152); > + add_f32_const(0x8p-152); > + add_f32_const(0x8p-152); Why are you adding 3 of the same? > + for (j = 0; j < nums; j++) { > + for (k = 0; k < 3; k++) { > + a = get_f32(j + ((k)%3)); > + b = get_f32(j + ((k+1)%3)); > + c = get_f32(j + ((k+2)%3)); How does this not overflow nums? There does not appear to be an assert on overflow in get_f<N>. > +#if defined(__arm__) > + r = __builtin_fmaf(a, b, c); > +#else > + r = __builtin_fmaf(a, b, c); > +#endif Eh? > +/* Number of constants in each table */ > +int get_num_f16(); > +int get_num_f32(); > +int get_num_f64(); This is not c++; you want (void) to indicate no arguments. r~