Conversation
Add a floating point conversion when multiplying when scaling coordinates so that the multiplication does not get fused with an adjacent addition or subtraction. This causes two instructions to be generated, a MUL and a ADD/SUB, instead of a single FMADD or FMSUB. A fused instruction has different rounding so ends up giving slightly different results to two instructions. This was causing different values in the SVGs generated between AMD64 and ARM64. Link: https://go.dev/ref/spec#Floating_point_operators
This should not be needed now that we have identified the cause of the difference being fused instructions, which are no longer generated. Commit: 6f2a675
Remove the parens around `rand1` in `randrect.evy` as they are no longer needed due to a recent change that allows niladic function calls in expressions without parens. Since this PR is in this file now, let's make it read nicer. There are probably other evy files that could have this change - one day we may find them.
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.
Add a floating point conversion when multiplying when scaling coordinates
so that the multiplication does not get fused with an adjacent addition or
subtraction. This causes two instructions to be generated, a MUL and a
ADD/SUB, instead of a single FMADD or FMSUB. A fused instruction has
different rounding so ends up giving slightly different results to two
instructions. This was causing different values in the SVGs generated
between AMD64 and ARM64.
Revert "labs: Rework random rectangle generation" as we no longer need
to work around this by rounding in Evy code.
Remove the parens in
randrect.evyas they are not needed any more dueto a recent change.
I've tested this on AMD64 and ARM64 and the same SVGs are now generated.
Link: https://go.dev/ref/spec#Floating_point_operators