Richard Henderson <richard.hender...@linaro.org> writes:
> 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? To replicate the 1841491 test case where the same number is used for a/b/c > >> + 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>. get_f<N> wraps the index with a mod op. > >> +#if defined(__arm__) >> + r = __builtin_fmaf(a, b, c); >> +#else >> + r = __builtin_fmaf(a, b, c); >> +#endif > > Eh? Ahh I was going to hardcode the arm madd instruction in as the builtin wasn't expanding. I tried setting -march in the CFLAGS but that didn't trigger it either on my buster arm-hf compiler. Any ideas how to get the compiler to do the right thing? > >> +/* 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. ok. > > > r~ -- Alex Bennée