#
858715f6 |
|
23-Jul-2018 |
Thomas Sewell <Thomas.Sewell@data61.csiro.au> |
Integrate future induction. The required checks and search process were added recently. The ProofNode proof script type now has a SingleRevInduct proof kind, which captures the reverse-induction at a single loop point, and the search process emits the relevant proof scripts. This required a minor restructure of the searcher.
|
#
75cb26c5 |
|
20-Jul-2018 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Check reverse single induction, use in search. The check module now knows how to check a proof of loop equalities by induction. The loop_bounds module already had this, but now it is more official. It can also check a predicate by *reverse* induction. The idea here is to name some predicate, show that it would be true if some iteration bound is reached (i.e. typically a very large number), and then show by induction back down that the predicate was also true in the initial iterations. This is useful in a special case involving a loop of the form for (i = 0; i < n; i ++) { } with no function calls. Suppose the body contains an array index p[i], which implies the array fits in memory, i * sizeof(*p) < 2 ^ 32. Since the final iteration i = n - 1 must be reached, the compiler can deduce that n <= 2 ^ 32 / sizeof(*p), a fact we will prove by reverse induction. The search module now contains code to detect cases like this and discover the best bound we can impose by simple binary search.
|
#
87f29cdb |
|
20-Jul-2018 |
Thomas Sewell <Thomas.Sewell@data61.csiro.au> |
Tweaks, setup for next feature.
|
#
155931bf |
|
30-May-2017 |
Thomas Sewell <Thomas.Sewell@data61.csiro.au> |
Update for tweak to the way search works.
|
#
68737284 |
|
11-Apr-2017 |
Thomas Sewell <Thomas.Sewell@data61.csiro.au> |
More loop_bounds inspection code.
|
#
423c9521 |
|
06-Apr-2017 |
Thomas Sewell <Thomas.Sewell@data61.csiro.au> |
Bugfixes.
|
#
22d882f7 |
|
20-Feb-2017 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Use loop bound extra eqs in split search. Try this strategy if an induct fails. It seems to get init_irqs to prove, and it's really easy to implement and usually fast.
|
#
929697ff |
|
04-Jan-2017 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Split inner instructions into pairs. Create extra functions l_impl'isb, r_impl'isb etc instead of just impl'isb. This means that rep_graph's function pair mechanism can figure out how to orient the function pair, which avoids weird bugs.
|
#
ae21d609 |
|
14-Nov-2016 |
Thomas Sewell <thomas.sewell@nicta.com.au> |
Fix for metrics generation.
|
#
cc226e32 |
|
10-Nov-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Add quick query of loop body addrs.
|
#
4f5e2a88 |
|
09-Nov-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Add facility for checking which loops are complex.
|
#
aacb6bff |
|
01-Nov-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Improve loop_bounds induction; avoid nesteds. New code for making sure loop_bounds avoids nested loops. Also, a substantial upgrade to how quickly the inductive search package discovers the true set of inductive invariants.
|
#
ae31944f |
|
01-Nov-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Tweak detection of complex loops.
|
#
aafda392 |
|
19-Oct-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Get function limit bounds working. Resolution: - the previous hack for general splittable points was restored. - the loop bound function limit code was rewritten to not require this anyway.
|
#
d6810c5a |
|
18-Oct-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Adjust approach to splittables. Generate splittable information lazily and store in cached_analysis of problem. Also check for complex loops at a slightly different point. Also replace an experimental better split point detector in logic with another experimental one which also doesn't work perfectly yet.
|
#
dda63cb1 |
|
23-Aug-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Exclude instruction functions from loop_bounds.
|
#
e8d25175 |
|
03-Jul-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Improve metrics mechanisms.
|
#
0d8ec275 |
|
23-Jun-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Note function limits in trace_refute also. Function limits of zero are a decent way of forbidding access to part of the system for experimental reasons.
|
#
dc21c5b8 |
|
23-Jun-2016 |
Thomas Sewell <thomas.sewell@nicta.com.au> |
Fix up loop bound metrics, useable.
|
#
3c295649 |
|
21-Jun-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Bugfix.
|
#
3dd2c9ca |
|
21-Jun-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Finish work on loop timing estimates. Or rather, problem metrics that may be correlated with loop timing.
|
#
4f670f1f |
|
21-Jun-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Loop timing estimates.
|
#
e1e57c36 |
|
21-Jun-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Retire some old code from loop_bounds.
|
#
46dfe435 |
|
20-Jun-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Slightly more timing information, diagnostic.
|
#
4fad4764 |
|
19-Jun-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Bugfix.
|
#
2ce309ae |
|
15-Jun-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
loop_bounds: more principle for preemptionPoint We've been manually adding bounds for functions which call preemptionPoint, but that means manually checking that we've found them all, and for larger numbers of runs I'm starting to make mistakes. Add a mechanism to quickly check this. Has to be configured to the name of the functions limited. Also allows pruning functions considered unreachable in this run.
|
#
604af79c |
|
14-Jun-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
loop_bounds: Recurse more thoroughly for merge. Merged bounds are computed by considering all possible call sites of a function. We need to avoid doing this recursively, since the exponentially many possible contexts would explode us. Previously this was done by avoiding the context operations inside a merge, which prevents us looking up the stack for functions with single call sites. This patch adds a little more finesse.
|
#
e0a7fea3 |
|
10-Jun-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Track timing in LoopBounds.txt
|
#
a0f838f1 |
|
10-May-2016 |
Felix Kam <felix.kam@nicta.com.au> |
added a flag to convert_loop_bounds.py and get_bound_super_ctxt to only read cached result and not do any long running calculations (treat those as failures)
|
#
6b2f1eba |
|
07-Apr-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Re-fix loop bound conversion. The call to the new test_hyp_group was still wrong.
|
#
80bbfdd7 |
|
29-Mar-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Adjust for API change in check_hyp_group. Somewhere in the parallelisation change, the change of return type of this function didn't get propagated.
|
#
9dfe0d02 |
|
08-Mar-2016 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Split load_target and load_target_args.
|
#
7e18d501 |
|
15-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Add no-C-information mode, tweak solver models.
|
#
f76d32f2 |
|
14-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Robustness adjustments.
|
#
d3cf19a6 |
|
12-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Normalise loop ids in get_bound_super_ctxt.
|
#
d3d29954 |
|
12-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Bugfix.
|
#
745d16a4 |
|
12-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Don't assume loop heads are canonical. Instead switch to the canonical loop heads for internal caching.
|
#
7d7812c1 |
|
12-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Cache aborts as None in get_bound_super_ctxt.
|
#
a6628e96 |
|
08-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Commentate loop bounds better on stdout.
|
#
be8155ec |
|
08-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Bugfixes.
|
#
ceeb63ab |
|
08-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Capture un-paired functions in some analyses. Functions callable from functions tagged 'ASM' should be analysed in ASM analysis phases also. Tongue twist that.
|
#
a0ff9425 |
|
07-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
More bugfixing and diagnostics for loop_bounds.
|
#
abaff68e |
|
07-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Yet more of the above.
|
#
54869e9f |
|
07-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Pass explicit tags further to fix more bugs.
|
#
b881dd6c |
|
06-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
More caching & bugfixes.
|
#
4225e91c |
|
04-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Loop bounds passing for now on seL4. (It's not actually finding all that many bounds, so we're not done yet.)
|
#
b9cfe8ec |
|
01-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Trivia.
|
#
a416eb7f |
|
01-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
More loop search bugfixes.
|
#
11039ac4 |
|
01-Oct-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Simplify search_bound, bugfixes.
|
#
28d0c74d |
|
30-Sep-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Fix bug in linear series hyp processing.
|
#
25b5a409 |
|
30-Sep-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Further bugfixes for linked problems.
|
#
e3d8d78f |
|
29-Sep-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Continue searching on Abort.
|
#
64fef777 |
|
29-Sep-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
minor bugfix
|
#
fe9400af |
|
29-Sep-2015 |
Thomas Sewell <Thomas.Sewell@nicta.com.au> |
Integrate loop_bounds.py from WCET project. The new loop_bounds.py is a sibling to trace_refute. It discovers bounds for binary loops in various ways. This version takes a previous external version and stitches it into the local infrastructure. It's still a bit of a mess.
|