Closed regehr closed 7 months ago
My reading from https://developer.arm.com/documentation/101433/0101/Register-descriptions/Advanced-SIMD-and-floating-point-registers/FPCR--Floating-point-Control-Register?lang=en is that fadd's rounding depends on the FPCR register. This is modeled with LLVM's "round.dynamic" feature.
So I think you need to have a different lifting for strict fp and non-strict fp. But you may want to check with a more knowledgeable FP person.
ok, yeah, I think this is something we're not yet interested in confronting in the lifter... I'll just filter out tests that make use of this feature. thanks!
this function:
gets compiled by the AArch64 backend to a regular fadd:
we lift this
fadd
(correctly, I hope) back to a regular LLVMfadd
, resulting in this failure of refinement:so it looks like someone's wrong here, but I don't know if it's Alive, the AArch64 backend, or my lifter