Commit Graph

365 Commits

Author SHA1 Message Date
d931967e5c fix previous commits 2018-12-02 18:32:03 +08:00
dd03fdfd1a typo 2018-12-02 18:26:54 +08:00
8940009e1a compiler: pass data_layout string to llvm.create_target_data before determining endianness 2018-12-02 18:26:19 +08:00
2e66788c6c compiler: support little endian target when storing now 2018-12-02 17:40:34 +08:00
7e14f3ca4e compiler,gateware: atomic now stores 2018-12-02 05:06:46 +08:00
8caea0e6d3 gateware,runtime: optimize RTIO kernel interface further
* now pinning (TODO: atomicity)
* for inputs, merge request and timeout registers
2018-11-08 18:29:24 +08:00
David Nadlinger
2463e5667d compiler: Fix attribute writeback with skipped fields
offset wasn't advanced for skipped fields previously,
leading to memory corruption/unaligned accesses at runtime.
2018-08-14 13:34:32 +01:00
whitequark
fab6e5cdff compiler: skip functional values in attribute writeback.
Fixes #1088.
2018-08-10 12:02:49 +00:00
whitequark
93af5d2a03 compiler: handle async RPC as last statement in try block.
Fixes #1107.
2018-08-07 07:06:53 +00:00
David Nadlinger
768b970deb Fixup 4359a437 (tuples of lists), add regression tests 2018-07-10 01:18:51 +01:00
whitequark
9260cdb2e8 compiler: support conversion of list to bytearray and bytes.
Fixes #1077.
2018-06-21 00:40:45 +00:00
whitequark
38dac16041 compiler: don't crash when quoting builtin functions.
Fixes #1051.
2018-06-05 23:27:23 +00:00
whitequark
db4d1878d3 compiler: remove debug print. 2018-05-25 09:37:18 +00:00
whitequark
fbf2c9a2fb compiler: hoist loads of kernel invariants to function entry block.
Addresses intraprocedural cases of #1007.
2018-05-25 02:18:13 +00:00
whitequark
12d1b9819c compiler: handle direct calls to class methods.
Fixes #1005.
2018-05-25 02:02:18 +00:00
whitequark
ce3c8fcd3e compiler: add source location to SSA arguments.
Fixes #1006.
2018-05-22 18:14:14 +00:00
whitequark
9b4ad8b5af compiler: implement local variable demotion. 2018-05-19 17:05:34 +00:00
whitequark
21a0f26cd1 compiler: do not emit nonstandard !unconditionally* LLVM metadata.
This metadata was added by an LLVM patch that was removed because
it was unsound.
2018-05-19 16:58:03 +00:00
whitequark
58967f14fd compiler: do not try to re-coerce fully coerced numerics. 2018-04-21 18:25:52 +00:00
whitequark
b4e3c30d8c compiler: desugar x != y into not x == y (fixes #974). 2018-04-20 12:20:45 +00:00
whitequark
86ceee570f compiler: reject calls with unexpected keyword arguments.
Fixes #924.
2018-02-21 11:37:12 +00:00
whitequark
4d915ad15b compiler: do not permit str(...). (#878) 2017-12-27 03:10:50 +00:00
whitequark
355acb5e13 compiler: fix typo in a0a2650f. 2017-12-26 21:55:22 +00:00
whitequark
9aec64093b compiler: do not ever emit !tbaa on invoke instructions. 2017-12-26 21:35:08 +00:00
whitequark
b31b59f7ca compiler: update for llvmlite 0.20.0. 2017-12-26 16:25:19 +00:00
whitequark
a0a2650fca compiler: do not use invoke for calls to nounwind ffi functions.
Otherwise, declarations such as:

  @syscall(flags={"nounwind", "nowrite"})
  def foo(...):

trip an LLVM assert because the invoke instruction and the !tbaa
metadata are no longer compatible since LLVM 4.0.
2017-12-26 16:24:57 +00:00
whitequark
c939c6183e Update to LLVM 4.0. 2017-12-26 14:09:17 +00:00
4387b0be1e clean up rtio_log 2017-11-03 00:52:53 +08:00
whitequark
f86744c65c compiler: implement ~ operator (fix #836). 2017-10-01 19:33:18 +00:00
whitequark
843786a091 compiler: minor intrinsic refactoring. 2017-10-01 19:00:10 +00:00
whitequark
491c7ef898 compiler: correct semantics of floating point % operator (fix #830). 2017-10-01 18:57:45 +00:00
whitequark
62f2693e36 compiler: correct semantics of integer % operator (#830). 2017-10-01 18:32:57 +00:00
whitequark
ea7549cfa4 compiler: coerce while condition to bool.
Fixes #768.
2017-07-01 18:59:07 +00:00
whitequark
ad2ee714c2 compiler: do not permit iterating str values.
This currently breaks badly on UTF-8, and doesn't even return
a value of a correct type.
2017-06-09 07:29:31 +00:00
whitequark
284382b1f5 compiler: add support for bytearray values in RPC (#714). 2017-06-09 07:15:25 +00:00
whitequark
9ed4e9c1cd compiler: add support for printing of bytearray values (#714). 2017-06-09 07:15:25 +00:00
whitequark
e9564b15c8 compiler: add support for bytearray type (#714). 2017-06-09 07:15:24 +00:00
whitequark
5b4fde30a8 compiler: unbreak subscripts for bytes values (#714). 2017-06-09 07:10:48 +00:00
whitequark
66a683f583 compiler: add support for bytes values in RPC (#714). 2017-06-09 07:10:48 +00:00
whitequark
778e7dc2ab compiler: add support for concatenating bytes values (#714). 2017-06-09 07:10:48 +00:00
whitequark
7b2da5294f compiler: add support for printing of bytes values (#714). 2017-06-09 07:10:48 +00:00
whitequark
dba4e1a28b compiler: add support for bytes type and b"x" literals (#714). 2017-06-09 07:10:48 +00:00
whitequark
c5d7445973 compiler: reject reachable implicit return if not returning TNone.
Fixes #718.
2017-04-21 18:11:14 +00:00
whitequark
ed2b10c5aa compiler: in codegen for delay(), round fp instead of truncating.
Consider delay(8*us). It results in the following computation...
  >>> 8*1e-06/1e-09
  7999.999999999999
with the result promptly getting truncated to 7999.

Fixes #706.
2017-04-21 17:36:44 +00:00
whitequark
31048f4b6a compiler: fix monomorphization of coerced integer literals.
Fixes #703.
2017-04-12 04:11:47 +00:00
whitequark
7e886ddc89 transforms.inferencer: do not unnecessarily mutate typedtree.
This caused the hash to change after every iteration of inference,
if the result of any coercion was an integer of indefinite width.
2017-03-02 16:15:37 +00:00
whitequark
a79c3c2cff compiler.transforms: implement a typedtree printer. 2017-03-02 15:28:04 +00:00
whitequark
252cda6e7f compiler.llvm_ir_generator: fix string quoting. 2017-02-28 21:28:38 +00:00
whitequark
d04e611232 firmware, compiler: rename rpc functions to be more consistent. 2017-02-25 14:12:58 +00:00
whitequark
c39394b4d5 firmware: port the exception handling routines to Rust. 2017-02-04 08:21:07 +00:00