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

Integrate type inf #1

Open
wants to merge 88 commits into
base: verify-main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
c33c1b3
debugging
mmcloughlin Feb 2, 2024
7fdf7fa
skeleton of smt-based TypeSolver
mmcloughlin Feb 6, 2024
61d9621
implement WidthOf
mmcloughlin Feb 6, 2024
5656b54
assert integer values
mmcloughlin Feb 6, 2024
e16a2b4
deduce types from model
mmcloughlin Feb 6, 2024
d45db47
assert equivalence with unify output
mmcloughlin Feb 7, 2024
46a7d66
fix symbolic type invariants
mmcloughlin Feb 9, 2024
76188df
check smt result vs dynwidths solver
mmcloughlin Feb 9, 2024
e6a8f75
Fix tests of encoded ops (#94)
avanhatt Feb 18, 2024
b5f113c
all: revive veri ci job (#93)
mmcloughlin Feb 18, 2024
487e2b3
veri: fix bug in BVShr type inference (#95)
mmcloughlin Feb 19, 2024
5190aae
skeleton isla tool
mmcloughlin Nov 30, 2023
1c8692a
integrate isla
mmcloughlin Nov 30, 2023
f4af432
it builds
mmcloughlin Nov 30, 2023
25e85ba
get smt out
mmcloughlin Nov 30, 2023
aa70c44
trying to get multiple opcodes to work
mmcloughlin Nov 30, 2023
7c432e0
emit Inst to opcodes
mmcloughlin Nov 30, 2023
8a9082e
Inst to ISLA trace
mmcloughlin Dec 1, 2023
943bd86
anyhow::bail
mmcloughlin Dec 1, 2023
173bb50
veri: slight refactor isla emit
mmcloughlin Dec 10, 2023
565f70f
veri: isla emit tree shake
mmcloughlin Dec 14, 2023
6c1bebf
use todo!
mmcloughlin Dec 14, 2023
ee2655c
start adhoc tool to experiment with x64 isla
mmcloughlin Dec 15, 2023
d44f3b1
copypasta isla logic into x86
mmcloughlin Dec 15, 2023
a0e811a
attempting to make x64 work
mmcloughlin Dec 19, 2023
63d64e3
first working trace output for x86
mmcloughlin Dec 24, 2023
9358c6b
write x64 traces to files
mmcloughlin Dec 24, 2023
2b24eb5
linearization
mmcloughlin Dec 24, 2023
b68e55b
disable simplify::hide_initialization
mmcloughlin Dec 24, 2023
72fa499
emit: add a selection of instructions
mmcloughlin Dec 27, 2023
f379221
optionally show full traces
mmcloughlin Dec 27, 2023
ba61ba7
update emit tool to use isla options
mmcloughlin Dec 29, 2023
e7897da
support filtering for ITE and struct reads
mmcloughlin Dec 29, 2023
837e59b
post-filter simplify
mmcloughlin Dec 29, 2023
447f355
account for PSTATE register writes
mmcloughlin Dec 29, 2023
0c06bfd
type inference: support "extra" spec variables
mmcloughlin Dec 30, 2023
ad20e6e
isle: printer skeleton
mmcloughlin Dec 30, 2023
d6ee519
isle: type printing
mmcloughlin Dec 30, 2023
8ed0d01
isle: printer supports more things
mmcloughlin Dec 30, 2023
81e1fb6
isle: more printing
mmcloughlin Dec 30, 2023
f491dfb
isle: more spec printing
mmcloughlin Dec 30, 2023
1ff75fc
isle: more printing
mmcloughlin Dec 30, 2023
ba0a01a
isle: print if-let
mmcloughlin Dec 30, 2023
df71a75
basic printer tests
mmcloughlin Dec 30, 2023
1e70a2f
ensure printed isle parses
mmcloughlin Dec 30, 2023
2876e90
alow position tagging to be disabled
mmcloughlin Dec 30, 2023
cda22d8
fix roundtrip errors
mmcloughlin Dec 30, 2023
dc155ce
test against full isle files
mmcloughlin Dec 30, 2023
227989e
start trace to spec translation
mmcloughlin Jan 1, 2024
8745a04
more spec translation
mmcloughlin Jan 1, 2024
493aa3d
even more spec translation
mmcloughlin Jan 1, 2024
475328c
use concat to support arbitrary length bitvectors
mmcloughlin Jan 1, 2024
6ef5e50
handle more spec translation
mmcloughlin Jan 1, 2024
e85162d
isle: support printing of any Printable nodes
mmcloughlin Jan 3, 2024
02a46a7
isle: Errors implement std::error::Error
mmcloughlin Jan 3, 2024
814a67a
emit: print generated spec
mmcloughlin Jan 3, 2024
97e8582
emit: tolerate spec conversion failure
mmcloughlin Jan 3, 2024
73f231f
isaspec adhoc tool for building specs
mmcloughlin Jan 12, 2024
92c6ffd
expend spec config to produce a real spec
mmcloughlin Jan 12, 2024
8e3f5cf
veriisle: specfunc experiment for executing single spec functions
mmcloughlin Jan 17, 2024
31e6ec7
veriisle: exec add function
mmcloughlin Jan 17, 2024
f26b486
isaspec: provide cases
mmcloughlin Jan 26, 2024
3e137e8
generate more alu ops
mmcloughlin Jan 26, 2024
46f554d
keep debug output
mmcloughlin Jan 26, 2024
f7decdd
elide no-op zext
mmcloughlin Jan 26, 2024
79d673c
veriisle: isaspec option to write to file
mmcloughlin Jan 26, 2024
b9da528
isle: parse spec implication operator
mmcloughlin Jan 26, 2024
5281b49
codegen: add inst_specs.isle to aarch64 isle compilation
mmcloughlin Jan 26, 2024
176292f
veriisle: generate instruction specs
mmcloughlin Jan 30, 2024
b5f2b68
verify add lowering to alu_rrr
mmcloughlin Jan 31, 2024
2fe39d3
wip
mmcloughlin Jan 31, 2024
a49bfdf
x64 footprint
mmcloughlin Jan 31, 2024
feaa688
switch back to add rule
mmcloughlin Feb 2, 2024
95f5c4a
restore imp case in spec_op_to_expr
mmcloughlin Feb 18, 2024
8c95834
revert changes to aarch64/inst.isle
mmcloughlin Feb 18, 2024
d1e50b0
remove debug print in widen to register width
mmcloughlin Feb 18, 2024
cfd78d8
wip
mmcloughlin Feb 18, 2024
eee9cff
fix build
mmcloughlin Feb 18, 2024
2100e74
isaspec generates the (= result #b1) condition
mmcloughlin Feb 19, 2024
106d01e
use different prefixes for each instruction case
mmcloughlin Feb 19, 2024
cbc0731
handle the 32-bit case
mmcloughlin Feb 19, 2024
5374323
extend sail spec to all bitwidths
mmcloughlin Feb 19, 2024
7bf9cc4
add more aluops
mmcloughlin Feb 19, 2024
9eba5f6
define isla dependency with git
mmcloughlin Feb 19, 2024
ccf5f25
containment check before accessing annotation info, still errors aris…
yelhsams Mar 8, 2024
d5006b4
broken ireduce test WIP
yelhsams Apr 18, 2024
902ee80
Merge branch 'mbm/unified-type-inference' into integrate-type-inf
yelhsams May 6, 2024
7a50810
start of integrating smt type inf changes into wasmtime
yelhsams May 7, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .github/actions/setup-z3/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: 'Install Z3'
description: 'Install Z3 to the PATH'
author: 'pavpanchekha'
branding:
icon: 'download'
color: 'blue'
inputs:
distribution:
description: 'The build to target'
default: 'glibc-2.31'
architecture:
description: 'The target architecture (x86, x64) for Windows builds.'
default: 'x64'
version:
description: 'Version range or exact version of Z3 to use.'
default: '4.10.2'
runs:
using: 'node12'
main: 'index.js'
25 changes: 25 additions & 0 deletions .github/actions/setup-z3/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
const core = require('@actions/core');
const tc = require('@actions/tool-cache');

function z3URL(architecture, version, distribution) {
let path = "https://github.com/Z3Prover/z3/releases/download/z3-" + version;
let file = "z3-" + version + "-" + architecture + "-" + distribution + ".zip";
return { path: path, file: file };
}

(async function() {
try {
const architecture = core.getInput('architecture', { required: true });
const distribution = core.getInput('distribution', { required: true });
const version = core.getInput('version', { required: true });

const url = z3URL(architecture, version, distribution);
const path = await tc.downloadTool(url.path + "/" + url.file);
const dir = await tc.extractZip(path)
const cachedPath = await tc.cacheDir(dir, 'z3', version);
core.addPath(cachedPath + "/" + url.file.replace(/\.zip$/, "") + "/bin");
core.exportVariable("CPATH", cachedPath + "/" + url.file.replace(/\.zip$/, "") + "/include");
} catch (error) {
core.setFailed(error.message);
}
})();
1 change: 1 addition & 0 deletions .github/actions/setup-z3/node_modules/.bin/semver

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions .github/actions/setup-z3/node_modules/.bin/uuid

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

147 changes: 147 additions & 0 deletions .github/actions/setup-z3/node_modules/@actions/core/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

79 changes: 79 additions & 0 deletions .github/actions/setup-z3/node_modules/@actions/core/lib/command.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading