Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

veri: implies spec op #99

Merged
merged 2 commits into from
Mar 18, 2024
Merged

veri: implies spec op #99

merged 2 commits into from
Mar 18, 2024

Conversation

mmcloughlin
Copy link
Collaborator

This PR implements the implies => spec operator.

Note this operator already exists in the annotation IR and veri IR levels, so
this PR just does the plumbing to connect up to the parser.

@mmcloughlin mmcloughlin marked this pull request as ready for review March 17, 2024 00:16
@mmcloughlin mmcloughlin requested a review from avanhatt March 17, 2024 00:24
@mmcloughlin mmcloughlin changed the base branch from mbm/isle-printer to verify-main March 18, 2024 16:33
@mmcloughlin mmcloughlin merged commit f60184b into verify-main Mar 18, 2024
3 checks passed
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this pull request Oct 9, 2024
Change generation of specs split on match cases so the requires uses
`match` also.

The change in avanhatt#101 is actually broken, though it did't trigger any
errors because the specs are unused on the main branch. When working on
avanhatt#99 the error does manifest. Specifically, the error is in the generated
requires clauses:


https://github.com/mmcloughlin/veriisle-wasmtime/blob/432bd4a86635cd82c76857689ff67c77e99cbd4e/cranelift/codegen/src/isa/aarch64/spec/loads.isle#L111-L113

This references the variable `extendop`, which does not exist. It
doesn't exist because it's a field of the enum variant, and we haven't
brought its fields into scope.

This change updates the match case spec generation to use a match in the
requires as well. This is probably a cosmetic regression avanhatt#62. If we care
to we could update this in future to only use a match statement in the
case where the child requires accesses the variable, but it doesn't seem
worth it for now.

Updates avanhatt#35 avanhatt#48
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this pull request Oct 9, 2024
Introduces an explicit unspecified type in the spec language.

This is motivated by work to model memory operations avanhatt#99, and in
particular the use of the `AMode` enum and its many variants. Some of
the variants are unused at the moment. The unspecified type is intended
to allow us to define _some_ model for them, and therefore satisfy type
inference. However, unspecified type is not allowed to be used for
anything non-trivial, so we would be alerted in future if we need to
revise the model to a correct type.

Updates avanhatt#48 avanhatt#49
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this pull request Oct 9, 2024
Derive type constraints for struct types.

This now allows an `instantiate` directive for example to contain a
struct field. This arises in avanhatt#99 when specifying the type instantiations
of a `load`, which takes `MemFlags`.

Updates avanhatt#49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants