Added translation for LLVM FNeg instruction. #291
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Added translation for LLVM FNeg instruction. No hint.
Implementation is a modification of the patch by @phoon0416. Using multiplcation by
-1.0
instead of subtracting from-0.0
.Added two tests, one for float and one for double that should successfully be analysed with ikos with the FNeg addition without throwing an unsupported LLVM instruction exception.
From the LLVM Language reference manual
Using compiler explorer to test:
Using
(-0.0) - NaN
does not flip the bit. Same with-1.0 * NaN
.-NaN
does flip the bit.The code in this PR does not quite adhere to the LLVM requirements of FNeg, but should cover most use cases.