<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sail/aarch64, branch sail2</title>
<subtitle>Formal specification language for ISAs</subtitle>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/'/>
<entry>
<title>Update 8.3 readme to point to 8.5 sail-arm</title>
<updated>2020-07-31T12:38:10+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2020-07-31T12:38:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=8f64b7b5aaa411d2866b78e6e9b0cf504d2043ec'/>
<id>8f64b7b5aaa411d2866b78e6e9b0cf504d2043ec</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix all remaining tests for this branch</title>
<updated>2019-07-16T21:12:42+00:00</updated>
<author>
<name>Alasdair</name>
</author>
<published>2019-07-16T21:12:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=92f50f2564834fcbeda250337c3acce571f7d6f0'/>
<id>92f50f2564834fcbeda250337c3acce571f7d6f0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix some broken interpreter tests</title>
<updated>2019-04-26T16:20:20+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2019-04-26T16:20:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=094c8e254abde44d45097aca7a36203704fe2ef4'/>
<id>094c8e254abde44d45097aca7a36203704fe2ef4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>AArch64: Update write_mem_val to write_mem</title>
<updated>2019-04-04T22:53:32+00:00</updated>
<author>
<name>Alasdair</name>
</author>
<published>2019-04-04T22:52:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=8dca40d218b5fbc0956b29887d9c1065b1c1757f'/>
<id>8dca40d218b5fbc0956b29887d9c1065b1c1757f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Tidy up of div and mod operators (C implementation was previously inconsistent with ocaml etc.). Rename div and mod builtins to ediv_int/emod_int and tdiv_int/tmod_int and add corresponding implementations. Add a test with negative operands. This will break existing models but will mean users have to think about which versions they want and won't accidentally use the wrong one.</title>
<updated>2019-03-22T16:55:23+00:00</updated>
<author>
<name>Robert Norton</name>
</author>
<published>2019-03-22T16:50:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=f4acbce30be2aecdfc491478a24c5eb551824f24'/>
<id>f4acbce30be2aecdfc491478a24c5eb551824f24</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix implicits in v8.2 public ARM spec</title>
<updated>2019-02-07T15:06:05+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2019-02-07T15:06:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=a0798a777d800f6255a1370806435a51d418a249'/>
<id>a0798a777d800f6255a1370806435a51d418a249</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid unification on ambiguous return types</title>
<updated>2019-02-02T01:31:20+00:00</updated>
<author>
<name>Alasdair</name>
</author>
<published>2019-02-02T01:22:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=ebfed17b57993f034d1a334014a8b9c9a542c0d5'/>
<id>ebfed17b57993f034d1a334014a8b9c9a542c0d5</id>
<content type='text'>
Usually we want to unify on return types, but in the case of
constraint unification (especially during rewriting) we can find
ourselves in the situation where unifying too eagerly on a return
type like bool('p &amp; 'q) can cause us to instantiate 'p and 'q in the
wrong order (as &amp; should really respect commutativity and
associativity during typechecking to avoid being overly brittle).

Originally I simply avoided adding cases for unify on NC_and/NC_or
and similar to avoid these cases, but this lead to the undesirable
situation where identical types wouldn't unify with each other for
an empty set of goals, which should be a trivial property of the
unification functions.

The solution is therefore to identify type variables in ambiguous
positions, and remove them from the list of goals during
unification. All type variables still have to be resolved by the
time we finish checking each application, but this has the added
bonus of making order much less important when it comes to
instantiating type variables.

Currently I am overly conservative about what qualifies as
ambigious, but this set should be expanded
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Usually we want to unify on return types, but in the case of
constraint unification (especially during rewriting) we can find
ourselves in the situation where unifying too eagerly on a return
type like bool('p &amp; 'q) can cause us to instantiate 'p and 'q in the
wrong order (as &amp; should really respect commutativity and
associativity during typechecking to avoid being overly brittle).

Originally I simply avoided adding cases for unify on NC_and/NC_or
and similar to avoid these cases, but this lead to the undesirable
situation where identical types wouldn't unify with each other for
an empty set of goals, which should be a trivial property of the
unification functions.

The solution is therefore to identify type variables in ambiguous
positions, and remove them from the list of goals during
unification. All type variables still have to be resolved by the
time we finish checking each application, but this has the added
bonus of making order much less important when it comes to
instantiating type variables.

Currently I am overly conservative about what qualifies as
ambigious, but this set should be expanded
</pre>
</div>
</content>
</entry>
<entry>
<title>Arm ElfMain: fix minor type errors</title>
<updated>2019-01-04T10:54:41+00:00</updated>
<author>
<name>Alastair Reid</name>
</author>
<published>2019-01-04T10:54:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=ed4ed7e7e0373d33c6aa3ed6566d0eee28ff0c91'/>
<id>ed4ed7e7e0373d33c6aa3ed6566d0eee28ff0c91</id>
<content type='text'>
I guess that Sail became a bit more strict about typechecking variables in
the last few months.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I guess that Sail became a bit more strict about typechecking variables in
the last few months.
</pre>
</div>
</content>
</entry>
<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>Various changes:</title>
<updated>2018-12-10T20:45:05+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2018-12-10T20:39:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=5bc5f5dee8921f8d24260dae54177e00c291fcb1'/>
<id>5bc5f5dee8921f8d24260dae54177e00c291fcb1</id>
<content type='text'>
* Improve type inference for numeric if statements (if_infer test)

* Correctly handle constraints for existentially quantified constructors (constraint_ctor test)

* Canonicalise all numeric types in function arguments, which
  triggers some weird edge cases between parametric polymorphism and
  subtyping of numeric arguments

* Because of this eq_int, eq_range, and eq_atom etc become identical

* Avoid duplicating destruct_exist in Env

* Handle some odd subtyping cases better
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Improve type inference for numeric if statements (if_infer test)

* Correctly handle constraints for existentially quantified constructors (constraint_ctor test)

* Canonicalise all numeric types in function arguments, which
  triggers some weird edge cases between parametric polymorphism and
  subtyping of numeric arguments

* Because of this eq_int, eq_range, and eq_atom etc become identical

* Avoid duplicating destruct_exist in Env

* Handle some odd subtyping cases better
</pre>
</div>
</content>
</entry>
</feed>
