Stella Laurenzo
2ba8296151
Add script tools/format_source.sh and run it on all python and c++ sources.
2020-06-13 14:53:54 -07:00
Stella Laurenzo
c3d4436397
Introduce a Target class and use it to define generic 32 and 64bit variants.
2020-06-13 14:43:10 -07:00
Stella Laurenzo
2bc7a77f98
Add conditional registration of IREE passes.
2020-06-11 17:57:10 -07:00
Stella Laurenzo
19196f23e1
Make a real library for InitAll and extend it to conditionally initialize dependencies.
...
* Conditioned on the top level CMake option to enable IREE.
* There is still some warning flags and such that need triage, but it does build/work.
2020-06-11 17:47:14 -07:00
Stella Laurenzo
a29ef9adc8
Add initial support for taking a dep on IREE.
...
* This won't work for most people until some upstream changes percolate.
* Sequestered it behind a flag and a special configure script (cmake_configure_iree.sh) for now.
2020-06-11 16:40:31 -07:00
Stella Laurenzo
308a54c3d0
Bump llvm-project to 52cae05e087b3d4fd02849fc37c387c720055ffb (2020/6/10).
...
* Fixes compile errors from upstream.
* XFAIL several tests that are now failing to legalize (will hand off to Sean).
2020-06-11 16:10:05 -07:00
Stella Laurenzo
750541e9a9
Extend type inference so that it works across conditional boundaries.
...
* The implementation is still limited but gives something to build on.
2020-06-10 21:33:17 -07:00
Stella Laurenzo
c84ce17573
Add test showing argument type inference.
2020-06-10 19:23:01 -07:00
Stella Laurenzo
917fd94f94
Add limited support for function arguments.
2020-06-10 19:17:29 -07:00
Stella Laurenzo
e3fd22a035
Add a (very) basic type inference pass for basicpy.
...
For simple programs, this gets us enough typing to lower to real backends.
2020-06-10 19:04:05 -07:00
Stella Laurenzo
3e58d8fe37
Add skeleton of type inference pass.
2020-06-10 14:48:22 -07:00
Stella Laurenzo
432e01fe8f
Move Basicpy and Numpy dialect IR to IR/ folder.
2020-06-09 19:22:24 -07:00
Stella Laurenzo
6728503fcf
Remove unused assignment
2020-06-09 18:35:21 -07:00
Stella Laurenzo
340f109742
Add implicit return and expression statements where the value id discarded.
2020-06-09 18:34:07 -07:00
Stella Laurenzo
2bb4cdf4e7
Split frontent.py into importer.py.
2020-06-09 17:16:36 -07:00
Stella Laurenzo
22cbe044c2
Add IfExp emission.
2020-06-09 17:10:52 -07:00
Stella Laurenzo
e18e8e0a96
Add boolean/logical operations (and, or, not).
...
* Adds a new to_boolean op to evaluate a value as a truthy i1
* Uses cascading scf.if ops to properly evaluate and/or sequences (short-circuit and original value returning)
* Adds a helper to construct select ops and uses it to implement 'not'
2020-06-09 00:01:21 -07:00
Stella Laurenzo
b0a80e04f1
Make binary_expr and binary_compare have similar asm syntax.
2020-06-08 18:29:14 -07:00
Stella Laurenzo
44f7e22f4d
Remove 2-arg compare special case and use common utility to do sub evaluation.
2020-06-08 17:54:14 -07:00
Stella Laurenzo
1ef3614682
Add support for short-circuit comparisons with scf.if.
2020-06-08 17:52:07 -07:00
Stella Laurenzo
a32219c3bb
Refactor things so that an SCF mixin dialect helper can be used.
...
* Makes the OpBuilder an input to the DialectHelper.
* The containment hierarchy can be simplified further.
* There are still only a few places this is instantiated, so opting for working over great.
2020-06-08 16:10:51 -07:00
Stella Laurenzo
85b724e70c
Adds ODS and import support for binary_expr and binary_compare ops.
...
* Currently only supports non-short-circuit comparisons.
2020-06-08 13:46:06 -07:00
Stella Laurenzo
7c176ed872
Add None constants.
2020-06-07 16:21:00 -07:00
Stella Laurenzo
4cd604f2a2
Fix AST constant handling to be compatible with 3.8 (the right way).
2020-06-07 16:16:19 -07:00
Stella Laurenzo
72499e0319
Add bytes constants.
2020-06-07 16:00:29 -07:00
Stella Laurenzo
a1e6ff4ab7
Add ellipsis constants.
2020-06-07 15:49:39 -07:00
Stella Laurenzo
f3829b1d4f
Add string constants.
2020-06-07 15:46:28 -07:00
Stella Laurenzo
869228e316
Add bool constants.
2020-06-07 15:15:19 -07:00
Stella Laurenzo
8280b86c05
Aggregate all lit test targets under check-npcomp.
2020-06-07 14:35:58 -07:00
Stella Laurenzo
639826183d
Update readme with test command.
2020-06-07 14:30:39 -07:00
Stella Laurenzo
af4466197e
Add lit test suite for python compiler.
...
* Adds a test for simple constants and fixes issues.
2020-06-07 14:29:39 -07:00
Stella Laurenzo
28048337ae
Fix issue with float_attr.
2020-06-06 22:01:38 -07:00
Stella Laurenzo
f67c5a42dc
Add notes on AST extraction.
2020-06-06 21:42:34 -07:00
Stella Laurenzo
7b95d860e9
Add sample for ast extraction.
2020-06-06 21:29:20 -07:00
Stella Laurenzo
0cc0a7165e
Add basic AST -> basicpy dialect function extraction.
...
* Extends the bindings to support locations.
* Various other things necessary to extract a function with simple numeric expressions.
2020-06-06 21:24:28 -07:00
Stella Laurenzo
60f132b26f
Add pass registrations and a simple compilation example from python.
...
* Got side-tracked hunting down a vague-linkage RTTI issue due to not anchoring key methods in PassOptions.h to a module.
* Took the path of least resistance and just added the option to build LLVM with RTTI. I know how to fix this but would like to do some broader upstream fixes versus just hunting/pecking/working around in this project.
2020-06-03 23:58:58 -07:00
Sean Silva
92e45703ad
Remove XFAIL.
...
This test seems to be passing, after a clean rebuild of everything
(including MLIR).
2020-06-03 20:52:16 -07:00
Sean Silva
cd7258dbd4
Enable warnings by default.
...
The secret here is LLVM_ENABLE_WARNINGS=ON.
I also fixed a couple warnings, which gets us to be warning-clean.
I noticed also that npcomp-run-mlir/basic.mlir seems to be failing.
Maybe something since the latest integrate. My next commit (introduce
npcomp mini runtime) will largely rewrite it though, so it'll get fixed
then.
2020-06-03 20:39:34 -07:00
Stella Laurenzo
fddf41ca92
Add python binding for running passes.
2020-06-03 01:29:59 -07:00
Stella Laurenzo
bb871e7601
Bump llvm-project version to 232d348c6eff8493fc016b1ea8a99db0e5620d81.
2020-06-02 16:17:23 -07:00
Sean Silva
e62e2e2915
Rename tests that run e2e-lowering-pipeline.
...
This makes it more clear that they are grouped together. A directory
seemed too heavyweight.
2020-06-01 19:34:44 -07:00
Sean Silva
7b9f0c3364
Add ability to run without optimizations.
...
The default is to only do the bare minimum needed for correctness, since
that stresses the layering of the system maximally.
2020-06-01 19:33:59 -07:00
Sean Silva
e8b1a07ef4
Initial NpcompRt (npcomp_rt) dialect boilerplate.
2020-06-01 19:07:53 -07:00
Sean Silva
e7b5a2b8a3
Make LowerRankedShapes clean up shape.from_extents ops.
...
We were previously relying on a later canonicalization pass to clean
them up, but it is a cleaner invariant if the pass gets rid of them
itself.
2020-05-29 18:00:35 -07:00
Sean Silva
67b129af7a
Add tools/bash_helpers.sh
...
This script (make sure to `source` it!) defines a number of handy
aliases which make compiler development more convenient.
Please feel free to add anything you find useful here.
2020-05-29 16:39:00 -07:00
Sean Silva
ccd5754b88
Rename `check-npcomp-opt` to just `check-npcomp`.
...
It runs npcomp-run-mlir as well now, so having `-opt` in the name is
confusing.
2020-05-29 16:12:10 -07:00
Sean Silva
ea822968fa
Add bare-bones npcomp-run-mlir.
...
The code isn't super clean, but is a useful incremental step
establishing most of the boilerplate for future enhancements.
We can't print or return tensors yet so correctness TBD, but I've
stepped into the running code in the debugger so I know it definitely is
running.
This is the first step to building out an npcomp mini-runtime. The
mini-runtime doesn't have to be fancy or complex, but it should at least
be layered nicely (which this code and the current compiler interaction
with the "runtime" code is not). Now that we have boilerplate for e2e
execution in some form, we can build that out.
2020-05-28 18:37:11 -07:00
Sean Silva
927a831c1e
Move npcomp registration to helpers.
...
This adds:
- mlir::NPCOMP::registerAllDialects()
- mlir::NPCOMP::registerAllPasses()
2020-05-21 16:35:53 -07:00
Sean Silva
3a09455540
Use upstream shape.from_extents
...
Replace our local `tcp.shape_from_extents` op with the upstream
`shape.from_extents` op.
2020-05-21 14:51:01 -07:00
Sean Silva
1fed1cb016
Update llvm-project to 753a21928413f8a7e76978cb1354e09150e114e0
2020-05-21 13:09:06 -07:00