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

SMT model pretty-printing #34

Closed
avanhatt opened this issue Jan 16, 2023 · 1 comment
Closed

SMT model pretty-printing #34

avanhatt opened this issue Jan 16, 2023 · 1 comment

Comments

@avanhatt
Copy link
Owner

Parse variable names back to something that looks like more the input ISLE, have options to show everything as hex, binary, or both.

@avanhatt avanhatt moved this from Todo to Nice to have in Implementation tasks Jan 23, 2023
@avanhatt
Copy link
Owner Author

avanhatt commented Mar 1, 2023

Added in #52

@avanhatt avanhatt closed this as completed Mar 1, 2023
@github-project-automation github-project-automation bot moved this from Nice to have to Done in Implementation tasks Mar 1, 2023
avanhatt added a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 9, 2024
Quick implementation of `bitselect`, `bnot` basically worked
out-of-the-box!

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 9, 2024
Specify and verify `ineg` on AArch64.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 9, 2024
Some of the CLIF term specs had incomplete type instantiations. This PR
populates more complete lists.

For unclear reasons this triggers some of the verification solver calls
to take a long time on 16-bit instantiations. This would need more
investigation. For now, this PR drops the solver timeout to 10 seconds
so the timeouts don't take as long.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 18, 2024
Verify `load_i64` expansions involving `MovWide` instructions.

We added `MovWide` ASLp specs in bytecodealliance#127. This PR provides additional specs
to utilize them.

Updates avanhatt#49 avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 18, 2024
Expand verification coverage of load rules.

Includes the 8/16/32-bit cases. Builds on bytecodealliance#132 to verify
`AMode.Unscaled` cases. Port over specs for `{s,u}extend` to cover
`load` expansions involving extensions.

Updates avanhatt#49 avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 18, 2024
Provide specs for store rules and verify a subset of expansions.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 18, 2024
Verify the `iabs` rules.

This did uncover an oddity that the `iabs` 32-bit and lower cases emit
extend
instructions from 32-to-32 bits. This failed at first since our ASLp
generation only generated cases with `from_bits < to_bits`.

Updates avanhatt#34 avanhatt#35
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 18, 2024
Verify `imul`, `smulhi` and `umulhi` rules.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 18, 2024
Verify rules involving `bxor`.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Model the `Reg` type on AArch64 as unknown bitvector width.

Reverses bytecodealliance#108. The motivation for this is the need to model vector
intructions, where `Reg` is also used to represent ARM `Z` 128-bit
registers. The type inference problems that necessitated the 64-bit type
before have now been fixed by a combination of bytecodealliance#167 and bytecodealliance#171.

Updates avanhatt#46 avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Generate spec for `MInst.VecLanes`, required for `popcnt` lowering.

Updates avanhatt#34 avanhatt#35
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Generate the `MovToFpu` specs, required for `popcnt`.

Updates avanhatt#34 avanhatt#35
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Implement conditional branch joining logic for if/else branches that
assign to distinct targets.

Until now all conditionals in ASLp programs have assigned to the same
targets on both branches. The merging logic or "phi nodes" only
implemented the logic for this simpler case. The `VecMisc` instructions
required for `popcnt` verification include `if` statements without
`else`, and therefore fail in this step. This PR refactors the code to
handle the distinct case.

The change is a no-op on current specs.

Updates avanhatt#35 avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Generate `VecMisc` count opcode spec, required for popcount
verification.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Verify a subset of CLIF `icmp` lowerings.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Verifies the `iadd_extend_*` rules. The main challenge here was
specifying the `extended_value_from_value` extractor which is
polymorphic on its input and output widths.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Generate `MovFromVec` specification, required for `popcnt`.

Updates avanhatt#34 avanhatt#35
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Generate specs for the shift opcodes of `AluRRR` instructions.

These had previously been disabled because of an issue with the bitwidth
of shift amounts. That has since been resolved in bytecodealliance#122 so we can enable
them here without issue.

Updates avanhatt#34 avanhatt#35
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Adds verification for `ishl` lowerings.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Model the `Reg` type on AArch64 as unknown bitvector width.

Reverses bytecodealliance#108. The motivation for this is the need to model vector
intructions, where `Reg` is also used to represent ARM `Z` 128-bit
registers. The type inference problems that necessitated the 64-bit type
before have now been fixed by a combination of bytecodealliance#167 and bytecodealliance#171.

Updates avanhatt#46 avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Generate spec for `MInst.VecLanes`, required for `popcnt` lowering.

Updates avanhatt#34 avanhatt#35
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Generate the `MovToFpu` specs, required for `popcnt`.

Updates avanhatt#34 avanhatt#35
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Implement conditional branch joining logic for if/else branches that
assign to distinct targets.

Until now all conditionals in ASLp programs have assigned to the same
targets on both branches. The merging logic or "phi nodes" only
implemented the logic for this simpler case. The `VecMisc` instructions
required for `popcnt` verification include `if` statements without
`else`, and therefore fail in this step. This PR refactors the code to
handle the distinct case.

The change is a no-op on current specs.

Updates avanhatt#35 avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Generate `VecMisc` count opcode spec, required for popcount
verification.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Verify a subset of CLIF `icmp` lowerings.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Verifies the `iadd_extend_*` rules. The main challenge here was
specifying the `extended_value_from_value` extractor which is
polymorphic on its input and output widths.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Generate `MovFromVec` specification, required for `popcnt`.

Updates avanhatt#34 avanhatt#35
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Generate specs for the shift opcodes of `AluRRR` instructions.

These had previously been disabled because of an issue with the bitwidth
of shift amounts. That has since been resolved in bytecodealliance#122 so we can enable
them here without issue.

Updates avanhatt#34 avanhatt#35
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 23, 2024
Adds verification for `ishl` lowerings.

Updates avanhatt#34
avanhatt pushed a commit to wellesley-prog-sys/wasmtime that referenced this issue Oct 27, 2024
Enable verification for the 8 to 64-bit cases of the `{u,s}shr` rules.

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

No branches or pull requests

1 participant