Draft
Conversation
Owner
Author
|
Next work item: instruction definitions. Nothing to see here now. |
f43eb82 to
8ef9d66
Compare
Collaborator
|
Can you merge in racket:master here (done in a separate PR)? |
Owner
Author
Yes - merged master into ports, and rebased this on master. The issue is that master had a lot of fixed with regards to handling of floating point registers so the register definitions now require you to specify which are floating point registers. I had to redefine the floating point registers as you can see in changes for this PR. This also requires you to have a recent |
They apparently don't need to be preserved across a GC.
This consolidates use of GitHub Actions, since we are using it as well with racket/racket.
Fixes runtime error found by ubsan.
Add testing for non-threaded x86_64, and i386 versions and remove references to travis_fold directives in testing.
Avoid allocating a flonum object for floating-opint calculations that are consumed only by other floating-point caculations. For this first cut, unboxing applies only to fl+, fl-, fl*, fl/, flabs, fl<, fl<=, fl=, fl>, fl>=, bytevector-ieee-double-[native-]ref, and bytevector-ieee-double-[native-]set!. Local variables can be unboxed in the same way as implicit temporaries, and loop arguments can be unboxed, but values in a closure and function-call arguments are always boxed. arm32 support is mostly in place, but not yet right. ppc32 support is not yet implemented. This commit includes a small change that is incompatible with previous Chez Scheme versions: `(fl= +nan.0)` (and similar for other comparisons) produces true instead of false.
Fix nested-loop handling with union find, and fix unboxing check to properly account for a primitive's arity.
This is a follow-up to 276f8da, where `(%tc-ref cp)` was preserved by moving into `%cp`, but I missed that intrinisics for string and bytevector arguments kill `%cp`.
The varargs convention differs from the fixed-argument convention on arm32le.
This reverts commit aa230ac, so it can be replaced with a solution that is less clumsy and less fragile.
This is a follow-up to 276f8da, where `(%tc-ref cp)` was supposed to be preserved by moving it into %cp, but intrinisics for bytevector arguments can kill %cp. Use a temporary to expose things properly to the register allocator.
Simplify and normalize backend elements for loading, storing, and converting floating-point numbers, taking better advantage of new support for floating-pointer registers.
The comparison was off for 32-bit plaforms, because it didn't allow fractional increments, The comparison was off for 64-bit platforms, bbecause it didn't account for round-trip failure when starting from the largest fixnum.
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.
No description provided.