5 ms·
This would only affect code that uses the old-school x87 floating point instructions, though? The x87 FPU unit indeed has scary global state that can make your
by pavlov 3y ago
This would only affect code that uses the old-school x87 floating point instructions, though? The x87 FPU unit indeed has scary global state that can make your doubles behave like floats in secret and silence.
I would think practically all modern FPU code on x86-64 would be using the SIMD registers which have explicit widths.
- borodi 3y agoSo it was a bit more pervasive than this, the issue was that flushing subnormals (values very close to 0) to 0 is a register that gets set, so if a library is built with the fastmath flags and it gets loaded, it sets the register, causing the whole process to flush it's subnormals. i.e https://github.com/llvm/llvm-project/issues/57589 https://github.com/llvm/llvm-project/issues/57589
- jcranmer 3y ago> This would only affect code that uses the old-school x87 floating point instructions, though? Actually, no, the x87 FPU instructions are the only ones that won't be affected. It sets the FTZ/DAZ bits, which exist for SSE instructions but not x87 instructions.
- mhh__ 3y agoYou're mistaking something else for the rounding mode and subnormal handling flags.