Draft
Conversation
Reduce flag setting pattern in CCMP instruction, from: if cond then X1 := E1 ... XN := EN else X1 := F1 ... XN := FN to: const ITESimp_0 := cond X1 := (ITESimp_0 & E1) | (!ITESimp_0 & F1) ... XN := (ITESimp_0 & EN) | (!ITESimp_0 & FN)
* Extend coverage testing to init vector state * Add two new fp ops * Support slice write to integer * Don't consider an impure operation dead * Don't CSE mutable variables, as location of CSE var is fixed to top * Fix defs for take and drop
* Extend to perform expression evaluation * Support types on globals * Support types on arrays
* Change shifts to take unsigned shift amounts * Change shifts to take two args of the same width * Add ROR operation, ror_bits * Remove mistaken use of 'sdiv_int' * Add x * 0 = 0 reduction
* Pull inductive variable reasoning out of vectorizer, into pre-pass instead * Pull vector expression cleanup and lowering into sub-passes * Simplify vectorizer to focus on correctness and simple pattern matching
* Add more fp prims * Support general append patterns * Support popcount * Fix unsigned min/max * Support bit set pattern
Original evaluator did not implement real sqrt. Not entirely clear how this should be done, but an implementation is needed for coverage to work.
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.
A bunch of changes I have been meaning to push up, cleaning up the vectoriser to deal with almost everything under
aarch64_vectors*. Placeholder for me, as it really needs to be broken up into a series of PRs, when I get around to it.General bug fixes:
takeanddroplist utilities.sdiv_intworked its way into the code base, but it doesn't exist.Improved coverage testing of vectors:
_Zarray with random values to get some results out of coverage testing for vectors instructions.FPRSqrtEstimateandUnsignedRSqrtEstimateare now reachable, add them to the inlining config.sqrt_real, not sure if it's accurate to hardware though.Change our primitive shift operations to line up with SMTLIB:
Changes to simplify and improve the vectoriser:
libASL/loops.ml.IntToBits, so that it can reason over trivial integer operations.select_vecandupdate_vecoperations in terms of integer positional arguments until the last possible phase, to simplify reasoning.Remaining:
_Zarray with random values, rather than just the low 64-bits.sqrt_realshould be.override.asl.