Open fizaaluthra opened 4 years ago
It looks like this is failing in ReciprocalEstimate
with an extremely small negative number. I'm guessing this should result in an infinity result, but I can't be sure.
GDB output from ReciprocalEstimate
:
(gdb) print result_exp
$1 = 253 // This needs to be in the range [1,252]
(gdb) print a
$2 = -6.58610278e-44
(gdb) print a_bits
$3 = 2147483695
(gdb) print a_bits >> 23
$4 = 256
(gdb) print (a_bits >> 23) & 0xff
$5 = 0
@mraleph can you take a look? We're seeing a lot of these failures from the fuzzer.
Reproduction case: fuzz.dart.txt. Should work without any flags: out/DebugSIMARM/dart fuzz.dart
Minimal reproduction:
import 'dart:typed_data';
main() {
Float32x4(1,1,1,1) / Float32x4.fromInt32x4Bits(Int32x4(1, 1, 1, 1));
}
It is a denormalized number and we expect denormalized numbers to not occur in this context.
Was able to reproduce on commit 43f74824c2f10806c92143b0bb5c2c3bea58c7a0