Module compare
Expand description
Provides various ways to compare crate::encoding::Encodings.
Some of the comparisons require an crate::smt::SmtSolver.
You can use the liblisa-z3 crate to import bindings to the Z3 SMT solver.
Modules§
- summary
- A condensed summary of the architecture comparison, suitable for export to a file.
Structs§
- Address
Comparison Options - Options for comparing
MemoryAccesses. - Comparison
Matrix - A matrix of pairwise comparisons between all architectures.
- Encoding
Comparison Options - Options for comparing
Encodings. - Encoding
Group - For each architecture, a group of overlapping encodings.
- Equivalence
- The result of
encodings_semantically_equal. Semantics are guaranteed to be equivalent ifequal && !timeoutholds. - Part
Index Mapping - A mapping between part indices of two encodings.
- Row
- A row in the architecture comparison table.
- RowKey
- The key for a row in an architecture comparison table. All encodings that have the same RowKey should be grouped into the same row.
- Rows
- A collection of rows.
Enums§
- Comparison
Result - The result of a pairwise comparison between two encodings.
- Computation
Equivalence - Represents the equivalence between two encodings.
Functions§
- compute_
split_ filters - Splits the encoding group into multiple groups, such that each group contains encodings that cover the exact same space. This function is one-to-many. That is, it will generate many smaller groups that each cover a small subset.
- encoding_
addresses_ equal - Compares the
MemoryAcessesof the two encodings, and returns whether they are equal. - encoding_
dataflows_ structurally_ equal - Determines if the dataflows of the encodings provided are equal, ignoring the actual computations. Only compares the overlapping parts of the covered instruction space.
- encodings_
semantically_ equal - Determines whether two encodings are semantically equivalent.
- encodings_
structurally_ equal - Only compares the overlapping parts of the covered instruction space.