-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
add condition to use emulated fma #42942
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This is kind of a regression from #42783 but only in the sense that we added a test that correctly found out that old machines were already doing the wrong thing. |
The old machine case we found here was a win64 ivybridge which does not have hardware fma, and the system libm is not quite doing the right thing. The issue was actually discovered in #42299 (comment) |
@JeffBezanson can we please get fma multiversioning so I don't have to figure out why this doesn't work? |
The CI machines are AMD Epycs. Might that be a different case? |
If they are Epyc, than they have FMA which would imply that my emulated version is wrong which doesn't make any sense, because then the failures should happen on other platforms. |
And the tests are passing on epyc with Linux and win32. Is something off with llvm on win64? |
It really shouldn't be able to do anything for LLVM to mess up. It should just be using the processor instruction... |
Isn't it possible that if this is running in some kind of a VM, that the VM is not exhibiting a slightly different target processor? I mean we've seen these issues when running in VMs before. Perhaps @staticfloat may know more. |
Closing as this test can't do anything until we have fma multiversioning. |
Testing has revealed that some old windows machines without fma were using broken emulated versions for Float32. This adds a test.