<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sail/src/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>move ott pp to different Makefile rule</title>
<updated>2019-12-13T17:33:48+00:00</updated>
<author>
<name>Peter Sewell</name>
</author>
<published>2019-12-13T17:33:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=78979a0b2aade430f90c9ef116bb684a30d8d0a8'/>
<id>78979a0b2aade430f90c9ef116bb684a30d8d0a8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>experiment in ott-generated pp</title>
<updated>2019-12-13T17:27:09+00:00</updated>
<author>
<name>Peter Sewell</name>
</author>
<published>2019-12-13T17:27:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=c07b9dc493c6b11689f4db5cf3cf6818990ac827'/>
<id>c07b9dc493c6b11689f4db5cf3cf6818990ac827</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix jib.ott and SMT regressions</title>
<updated>2019-10-28T16:30:21+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2019-10-28T15:46:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=da209f9f4bb1772a0b37327fc8d949e240602484'/>
<id>da209f9f4bb1772a0b37327fc8d949e240602484</id>
<content type='text'>
SMT seems sensitive to gensym counter being reset between definitions,
but it shouldn't care due to unique_per_function_ids... need to
investigate further. Only causes a single test to fail so must be
subtle. Diffing between the bad/good versions reveals a few lines of
generated SMT go missing when the gensym counter is reset.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
SMT seems sensitive to gensym counter being reset between definitions,
but it shouldn't care due to unique_per_function_ids... need to
investigate further. Only causes a single test to fail so must be
subtle. Diffing between the bad/good versions reveals a few lines of
generated SMT go missing when the gensym counter is reset.
</pre>
</div>
</content>
</entry>
<entry>
<title>Some C backend refactoring</title>
<updated>2019-10-28T13:38:10+00:00</updated>
<author>
<name>Alasdair</name>
</author>
<published>2019-10-26T03:59:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=7f9371921cfcec819d9e0c778f8b817fb1566bce'/>
<id>7f9371921cfcec819d9e0c778f8b817fb1566bce</id>
<content type='text'>
Make it so that jib_compile.ml never relies on specific string encodings
for various constructs in C. Previously this happened when
monomorphisation occured for union constructors and fields, i.e.

x.foo -&gt; x.zfoo_bitsz632z7

Now identifiers that can be modified are represented as (id, ctyp list)
tuples, so we can keep the types

x.foo -&gt; x.foo::&lt;bits(32)&gt;

This then enables us to do jib IR -&gt; jib IR rewrites that modify types

In particular there is now a rewrite that removes tuples as an IR-&gt;IR
pass rather than doing it ad-hoc in the C code generation, although this
is not on by default

Note that this change seems to have triggered an Ott bug so jib.lem is
now checked in and not generated from Ott
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make it so that jib_compile.ml never relies on specific string encodings
for various constructs in C. Previously this happened when
monomorphisation occured for union constructors and fields, i.e.

x.foo -&gt; x.zfoo_bitsz632z7

Now identifiers that can be modified are represented as (id, ctyp list)
tuples, so we can keep the types

x.foo -&gt; x.foo::&lt;bits(32)&gt;

This then enables us to do jib IR -&gt; jib IR rewrites that modify types

In particular there is now a rewrite that removes tuples as an IR-&gt;IR
pass rather than doing it ad-hoc in the C code generation, although this
is not on by default

Note that this change seems to have triggered an Ott bug so jib.lem is
now checked in and not generated from Ott
</pre>
</div>
</content>
</entry>
<entry>
<title>Build libsail again (removed Bytcode and Share_directory)</title>
<updated>2019-04-17T13:25:16+00:00</updated>
<author>
<name>Shaked Flur</name>
</author>
<published>2019-04-17T13:25:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=f091479ccfbe7861cd0620cef414887ccfe65090'/>
<id>f091479ccfbe7861cd0620cef414887ccfe65090</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Temporarily remove Makefile part that is making Jenkins fail</title>
<updated>2019-04-16T18:38:44+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2019-04-16T18:38:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=a6b9e85997879845d1317270696ceffff1c00127'/>
<id>a6b9e85997879845d1317270696ceffff1c00127</id>
<content type='text'>
Comment out some interpreter tests that go into infinite loops because
those will cause issues for Jenkins.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Comment out some interpreter tests that go into infinite loops because
those will cause issues for Jenkins.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'sail2' into rmem_interpreter</title>
<updated>2019-03-14T13:56:37+00:00</updated>
<author>
<name>Jon French</name>
</author>
<published>2019-03-14T13:56:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=0d88c148a2a068a95b5fc3d5c25b599faf3e75a0'/>
<id>0d88c148a2a068a95b5fc3d5c25b599faf3e75a0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>package and install Sail as an ocamlfind library</title>
<updated>2019-03-13T16:14:06+00:00</updated>
<author>
<name>Jon French</name>
</author>
<published>2019-03-13T16:14:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=1fc69968a831305f2db43544b503fffc9b4106cc'/>
<id>1fc69968a831305f2db43544b503fffc9b4106cc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>C: Refactor C backend</title>
<updated>2019-03-08T17:21:30+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2019-03-07T20:22:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=703e996e44d0c1773fb23cd554b896318fae081b'/>
<id>703e996e44d0c1773fb23cd554b896318fae081b</id>
<content type='text'>
Main change is splitting apart the Sail-&gt;IR compilation stage and the
C code generation and optimization phase. Rather than variously
calling the intermediate language either bytecode (when it's not
really) or simply IR, we give it a name: Jib (a type of Sail). Most of
the types are still prefixed by c/C, and I don't think it's worth
changing this.

The various parts of the C backend are now in the src/jib/ subdirectory

src/jib/anf.ml         - Sail-&gt;ANF translation
src/jib/jib_util.ml    - various Jib AST processing and helper functions (formerly bytecode_util)
src/jib/jib_compile.ml - Sail-&gt;Jib translation (using Sail-&gt;ANF)
src/jib/c_backend.ml   - Jib-&gt;C code generator and optimizations

Further, bytecode.ott is now jib.ott and generates jib.ml (which still
lives in src/ for now)

The optimizations in c_backend.ml should eventually be moved in a
separate jib_optimization file.

The Sail-&gt;Jib compilation can be parameterised by two functions - one
is a custom ANF-&gt;ANF optimization pass that can be specified on a per
Jib backend basis, and the other is the rule for translating Sail
types in Jib types. This can be more or less precise depending on how
precise we want to be about bit-widths etc, i.e. we only care about &lt;64
and &gt;64 for C, but for SMT generation we would want to be as precise
as possible.

Additional improvements:

The Jib IR is now agnostic about whether arguments are allocated on
the heap vs the stack and this is handled by the C code generator.

jib.ott now has some more comments explaining various parts of the Jib
AST.

A Set module and comparison function for ctyps is defined, and some
functions now return ctyp sets rather than lists to avoid repeated
work.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Main change is splitting apart the Sail-&gt;IR compilation stage and the
C code generation and optimization phase. Rather than variously
calling the intermediate language either bytecode (when it's not
really) or simply IR, we give it a name: Jib (a type of Sail). Most of
the types are still prefixed by c/C, and I don't think it's worth
changing this.

The various parts of the C backend are now in the src/jib/ subdirectory

src/jib/anf.ml         - Sail-&gt;ANF translation
src/jib/jib_util.ml    - various Jib AST processing and helper functions (formerly bytecode_util)
src/jib/jib_compile.ml - Sail-&gt;Jib translation (using Sail-&gt;ANF)
src/jib/c_backend.ml   - Jib-&gt;C code generator and optimizations

Further, bytecode.ott is now jib.ott and generates jib.ml (which still
lives in src/ for now)

The optimizations in c_backend.ml should eventually be moved in a
separate jib_optimization file.

The Sail-&gt;Jib compilation can be parameterised by two functions - one
is a custom ANF-&gt;ANF optimization pass that can be specified on a per
Jib backend basis, and the other is the rule for translating Sail
types in Jib types. This can be more or less precise depending on how
precise we want to be about bit-widths etc, i.e. we only care about &lt;64
and &gt;64 for C, but for SMT generation we would want to be as precise
as possible.

Additional improvements:

The Jib IR is now agnostic about whether arguments are allocated on
the heap vs the stack and this is handled by the C code generator.

jib.ott now has some more comments explaining various parts of the Jib
AST.

A Set module and comparison function for ctyps is defined, and some
functions now return ctyp sets rather than lists to avoid repeated
work.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'sail2' into rmem_interpreter</title>
<updated>2019-02-25T12:10:30+00:00</updated>
<author>
<name>Jon French</name>
</author>
<published>2019-02-25T12:10:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=915d75f9c49fa2c2a9d47d189e4224cee16582c9'/>
<id>915d75f9c49fa2c2a9d47d189e4224cee16582c9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
