Skip to content

veri: implies spec op#99

Merged
mmcloughlin merged 2 commits intoverify-mainfrom
mbm/imp-op
Mar 18, 2024
Merged

veri: implies spec op#99
mmcloughlin merged 2 commits intoverify-mainfrom
mbm/imp-op

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
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 #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
avanhatt pushed a commit that referenced this pull request Jan 11, 2026
Update all dependencies, wasmtime18, replace wasi-cap-std-sync with wasi-common
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