Conversation
Collaborator
Author
|
All backends except LLVM used to use floor-based integer division prior to this PR such that |
jiribenes
reviewed
Dec 18, 2025
libraries/common/effekt.effekt
Outdated
| def div(x: Int, y: Int): Int = { | ||
| val q = x / y | ||
| val r = x.rem(y) | ||
| q - (r.bitwiseShr(31).bitwiseAnd(y.bitwiseShr(31).bitwiseOr(1))) |
Contributor
There was a problem hiding this comment.
Stupid question: Will this work on LLVM where Int is i64 as opposed to f64 (~i32 for the purposes of bin ops) like in JS?
Collaborator
Author
There was a problem hiding this comment.
It appears to be working and yielding consistent results with the remaining backends. I'll do some further testing, though. Good point, thanks!
a5daf90 to
bb56a38
Compare
Collaborator
|
Please add a fast implementation of |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Since this is based on effekt definitions and not FFI, this has the added side-effect of also unifying the behavior across all backends.