<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sail/aarch64/Makefile, branch sail2</title>
<subtitle>Formal specification language for ISAs</subtitle>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/'/>
<entry>
<title>Fix monomorpisation tests with typechecker changes</title>
<updated>2018-12-20T22:00:40+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2018-12-20T22:00:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=0a9200153430f5e727b3ebe1fa272d4842069530'/>
<id>0a9200153430f5e727b3ebe1fa272d4842069530</id>
<content type='text'>
Add an extra argument for Type_check.prove for the location of the prove
call (as prove __POS__) to help debug SMT related issues
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add an extra argument for Type_check.prove for the location of the prove
call (as prove __POS__) to help debug SMT related issues
</pre>
</div>
</content>
</entry>
<entry>
<title>Parser tweaks and fixes</title>
<updated>2018-11-30T19:13:39+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2018-11-30T18:54:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=0363a325ca6c498e086519c4ecaf1f51dbff7f64'/>
<id>0363a325ca6c498e086519c4ecaf1f51dbff7f64</id>
<content type='text'>
- Completely remove the nexp = nexp syntax in favour of nexp ==
  nexp. All our existing specs have already switched over. As part of
  this fix every test that used the old syntax, and update the
  generated aarch64 specs

- Remove the `type when constraint` syntax. It just makes changing the
  parser in any way really awkward.

- Change the syntax for declaring new types with multiple type
  parameters from:

  type foo('a : Type) ('n : Int), constraint = ...

  to

  type foo('a: Type, 'n: Int), constraint = ...

  This makes type declarations mimic function declarations, and makes
  the syntax for declaring types match the syntax for using types, as
  foo is used as foo(type, nexp). None of our specifications use types
  with multiple type parameters so this change doesn't actually break
  anything, other than some tests. The brackets around the type
  parameters are now mandatory.

- Experiment with splitting Type/Order type parameters from Int type
  parameters in the parser.

  Currently in a type bar(x, y, z) all of x, y, and z could be either
  numeric expressions, orders, or types. This means that in the parser
  we are severely restricted in what we can parse in numeric
  expressions because everything has to be parseable as a type (atyp)
  - it also means we can't introduce boolean type
  variables/expressions or other minisail features (like removing
  ticks from type variables!) because we are heavily constrained by
  what we can parse unambigiously due to how these different type
  parameters can be mixed and interleaved.

  There is now experimental syntax: vector::&lt;'o, 'a&gt;('n) &lt;--&gt;
  vector('n, 'o, 'a) which splits the type argument list into two
  between Type/Order-polymorphic arguments and Int-polymorphic
  arguments. The exact choice of delimiters isn't set in stone - ::&lt;
  and &gt; match generics in Rust. The obvious choices of &lt; and &gt; / [ and
  ] are ambigious in various ways.

  Using this syntax right now triggers a warning.

- Fix undefined behaviour in C compilation when concatenating a
  0-length vector with a 64-length vector.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Completely remove the nexp = nexp syntax in favour of nexp ==
  nexp. All our existing specs have already switched over. As part of
  this fix every test that used the old syntax, and update the
  generated aarch64 specs

- Remove the `type when constraint` syntax. It just makes changing the
  parser in any way really awkward.

- Change the syntax for declaring new types with multiple type
  parameters from:

  type foo('a : Type) ('n : Int), constraint = ...

  to

  type foo('a: Type, 'n: Int), constraint = ...

  This makes type declarations mimic function declarations, and makes
  the syntax for declaring types match the syntax for using types, as
  foo is used as foo(type, nexp). None of our specifications use types
  with multiple type parameters so this change doesn't actually break
  anything, other than some tests. The brackets around the type
  parameters are now mandatory.

- Experiment with splitting Type/Order type parameters from Int type
  parameters in the parser.

  Currently in a type bar(x, y, z) all of x, y, and z could be either
  numeric expressions, orders, or types. This means that in the parser
  we are severely restricted in what we can parse in numeric
  expressions because everything has to be parseable as a type (atyp)
  - it also means we can't introduce boolean type
  variables/expressions or other minisail features (like removing
  ticks from type variables!) because we are heavily constrained by
  what we can parse unambigiously due to how these different type
  parameters can be mixed and interleaved.

  There is now experimental syntax: vector::&lt;'o, 'a&gt;('n) &lt;--&gt;
  vector('n, 'o, 'a) which splits the type argument list into two
  between Type/Order-polymorphic arguments and Int-polymorphic
  arguments. The exact choice of delimiters isn't set in stone - ::&lt;
  and &gt; match generics in Rust. The obvious choices of &lt; and &gt; / [ and
  ] are ambigious in various ways.

  Using this syntax right now triggers a warning.

- Fix undefined behaviour in C compilation when concatenating a
  0-length vector with a 64-length vector.
</pre>
</div>
</content>
</entry>
<entry>
<title>Adapt theory imports for Isabelle 2018</title>
<updated>2018-08-28T17:10:13+00:00</updated>
<author>
<name>Thomas Bauereiss</name>
</author>
<published>2018-08-28T16:31:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=9232814ed220cff16e6cac808f327b326f2e2f2c'/>
<id>9232814ed220cff16e6cac808f327b326f2e2f2c</id>
<content type='text'>
Requires a recent Lem version that supports generating session-qualified
imports, e.g. revision rems-project/lem@d92b077f1781765a65082c815ff363ef79499860
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Requires a recent Lem version that supports generating session-qualified
imports, e.g. revision rems-project/lem@d92b077f1781765a65082c815ff363ef79499860
</pre>
</div>
</content>
</entry>
<entry>
<title>More efficient bitfield implementation</title>
<updated>2018-06-11T15:50:11+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2018-06-11T15:01:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=d96cd3e8d74b303ff89716294d173754c70cd6b7'/>
<id>d96cd3e8d74b303ff89716294d173754c70cd6b7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add a constant folding optimization pass</title>
<updated>2018-06-07T00:38:21+00:00</updated>
<author>
<name>Alasdair</name>
</author>
<published>2018-06-07T00:38:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=1f88b4812916a56df8d5ff8c09ac56c8e4086be4'/>
<id>1f88b4812916a56df8d5ff8c09ac56c8e4086be4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Factor utility functions for IR into separate file and struct update optimizations.</title>
<updated>2018-06-06T19:52:35+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2018-06-06T19:52:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=9cc101327450f5871749ecd797361f5b254100e5'/>
<id>9cc101327450f5871749ecd797361f5b254100e5</id>
<content type='text'>
Move the utility functions for graph generation and pretty printing of
intermediate representation instructions into a separate file,
bytecode_util.ml, by analogy with ast_util.ml.

Add an optimization pass that searches for specific patterns of struct
updates and removes uncessary copying of the structs involved. With
this optimisation pass the time taken for u-boot to run approx
57,000,000 instructions goes down from about 11-12 minutes to 8
minutes (about 120,000 IPS).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move the utility functions for graph generation and pretty printing of
intermediate representation instructions into a separate file,
bytecode_util.ml, by analogy with ast_util.ml.

Add an optimization pass that searches for specific patterns of struct
updates and removes uncessary copying of the structs involved. With
this optimisation pass the time taken for u-boot to run approx
57,000,000 instructions goes down from about 11-12 minutes to 8
minutes (about 120,000 IPS).
</pre>
</div>
</content>
</entry>
<entry>
<title>Some additional fixes to C backend. Re-enable primitive optimizations.</title>
<updated>2018-06-06T13:04:50+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2018-06-06T13:01:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=11521bfab8ebc89435673e365d0dce0392d63c32'/>
<id>11521bfab8ebc89435673e365d0dce0392d63c32</id>
<content type='text'>
Also add an additional -Oz3 flag that uses z3 to optimize some
additional types. This is currently very experimental and doesn't
fully work yet.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also add an additional -Oz3 flag that uses z3 to optimize some
additional types. This is currently very experimental and doesn't
fully work yet.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix bug with function return types in C backend</title>
<updated>2018-06-04T15:58:14+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2018-06-04T15:58:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=80384aeee9482b481b7c1d23a3155098c5d90d28'/>
<id>80384aeee9482b481b7c1d23a3155098c5d90d28</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>add loc for arm full.</title>
<updated>2018-05-09T16:23:46+00:00</updated>
<author>
<name>Robert Norton</name>
</author>
<published>2018-05-09T16:23:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=a2256e805507a1a6511b6088c757ff500b27b957'/>
<id>a2256e805507a1a6511b6088c757ff500b27b957</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add tests for Isabelle-&gt;OCaml generation for CHERI and AArch64</title>
<updated>2018-05-09T13:40:30+00:00</updated>
<author>
<name>Thomas Bauereiss</name>
</author>
<published>2018-05-08T17:48:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=972d349919fc5ebe911604330ea3c80e70fdcfad'/>
<id>972d349919fc5ebe911604330ea3c80e70fdcfad</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
