mu-impl-fast merge requestshttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests2017-08-21T17:47:09+10:00https://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/23Ir validation2017-08-21T17:47:09+10:00Isaac Garianoisaac@ecs.vuw.ac.nzIr validationhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/22use shell executor for CI2017-08-16T13:44:44+10:00Yi Linuse shell executor for CIhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/21Sel4 rumprun devel2017-10-20T11:48:26+11:00Isaac Garianoisaac@ecs.vuw.ac.nzSel4 rumprun develI think it's actually ready this time (passes all the tests on aarch64 and x86-64).I think it's actually ready this time (passes all the tests on aarch64 and x86-64).Javad Ebrahimian Amirijavad.amiri@anu.edu.auJavad Ebrahimian Amirijavad.amiri@anu.edu.auhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/20Sel4 rumprun devel2017-10-20T11:48:26+11:00Javad Ebrahimian Amirijavad.amiri@anu.edu.auSel4 rumprun develJavad Ebrahimian Amirijavad.amiri@anu.edu.auJavad Ebrahimian Amirijavad.amiri@anu.edu.auhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/19merge with develop: use rust 1.19, add get_mu_version(), new block naming sch...2017-08-03T21:17:25+10:00Yi Linmerge with develop: use rust 1.19, add get_mu_version(), new block naming scheme, fix linking issue with macos, script to run pypy, features and bugs fixinghttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/18Develop2017-07-23T12:50:23+10:00Isaac Garianoisaac@ecs.vuw.ac.nzDevelophttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/17merge develop to master: ready to make code public2017-07-20T15:41:36+10:00Yi Linmerge develop to master: ready to make code publichttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/16Trace scheduling2017-07-19T15:56:33+10:00Yi LinTrace schedulinghttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/15Finished and tested aarch64 ALLOCA & ALLOCAHYBRID2017-07-13T21:56:02+10:00Yi LinFinished and tested aarch64 ALLOCA & ALLOCAHYBRIDhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/14merge with develop: code cleanup, use rodal for persisting vm, new name mangl...2017-07-13T13:27:46+10:00Yi Linmerge with develop: code cleanup, use rodal for persisting vm, new name mangling scheme, a few features implemented on aarch64https://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/13Merge open source into develop2017-07-11T18:04:22+10:00Yi LinMerge open source into develophttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/12Develop2017-06-27T15:54:30+10:00Isaac Garianoisaac@ecs.vuw.ac.nzDevelophttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/11Merge Aarch64 into develop2017-06-14T12:08:49+10:00Isaac Garianoisaac@ecs.vuw.ac.nzMerge Aarch64 into develophttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/10Merge aarch64 into master2017-06-13T13:32:17+10:00Isaac Garianoisaac@ecs.vuw.ac.nzMerge aarch64 into masterApart from modifications to the aarch64 backend (to support 128 bit arithmetic, adding additional debug info so that backtrace works, supporting FuncRef's and fixing the way Branch2 works), I have made a few changes to the other parts of...Apart from modifications to the aarch64 backend (to support 128 bit arithmetic, adding additional debug info so that backtrace works, supporting FuncRef's and fixing the way Branch2 works), I have made a few changes to the other parts of the code:
* I added a few simple utility functions in ir.rs and op.rs
* I added a test that tests for 128-bit subtraction
* I modified entrypoints.rs so that the the 128-bit arithmetic functions operate on UINT128's as opposed to pairs of UINT64's
* I also added conversion functions to entrypoints.rs and math.rs that convert to and from floating-point and int128's
* I modified the x86_64 instruction selection so that it calls the 128 bit arithmetic functions with 128-bit arguments (and not pairs of 64-bit ones)
* (Note: I haven't implimented the floating point conversions in x86_64, but that should be easilly doable by just copying my aarch64 code)
Running the som interpreter (when compiled with Zebu) takes 116.44 seconds
(specifically the command
`/tmp/RPySOM-no-jit-mu -cp ./RPySOM/Smalltalk ./RPySOM/TestSuite/TestHarness.som`,
after running `pytest ./test_som.py`)
Running the SOM interpret through rpythons C-backend took 0.01 seconds
(i.e. runing `./RPySOM-no-jit -cp ../RPySOM/Smalltalk ../RPySOM/TestSuite/TestHarness.som`
after running `python2 ./rpython/bin/rpython -O3 --no-shared ../RPySOM/src/targetsomstandalone.py`
Interestingly this is faster than running on my x86-64 virtual machine (whose processor is much better than the aarch64 machines) which took 0.57 seconds, however running it through Zebu was slower (x86-64 only took 76.08 seconds).
I.e. it is about 11.6 thousand times slower running through Mu on aarch64 and only 1.5 thousand times slower on x86-64.
Note: the time with interpreting through python (i.e. running `python2 ./src/targetsomstandalone.py -cp ./Smalltalk ./TestSuite/TestHarness.som`) was 5.17 seconds on aarc64 and 5.48 on x86-64, indicating that Zebu is 22.5 times slower than python on aarch64 and only 14 times slower on x86-64.Yi LinYi Linhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/9Merging master to aarch642017-06-01T13:40:44+10:00Isaac Garianoisaac@ecs.vuw.ac.nzMerging master to aarch64Isaac Garianoisaac@ecs.vuw.ac.nzIsaac Garianoisaac@ecs.vuw.ac.nzhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/8merge with develop: support for int128, remove unnecessary RwLocks, changed C...2017-05-30T14:11:37+10:00Yi Linmerge with develop: support for int128, remove unnecessary RwLocks, changed CI stages, capable of running SOM interpreterhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/7bug fix attempt: compile libmu again before testjit:rpython, setting MU_LOG_L...2017-05-25T00:28:30+10:00Yi Linbug fix attempt: compile libmu again before testjit:rpython, setting MU_LOG_LEVEL=infohttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/6Merge Aarch64 branch with master2017-05-17T00:13:45+10:00Isaac Garianoisaac@ecs.vuw.ac.nzMerge Aarch64 branch with masterI have now thoroughly tested the aarch64 backend and am unaware of any bugs (there are some potential ones such as if you try to compile a Mu function that has a branch to block too far away). It has passed all the rust tests and the pyt...I have now thoroughly tested the aarch64 backend and am unaware of any bugs (there are some potential ones such as if you try to compile a Mu function that has a branch to block too far away). It has passed all the rust tests and the python ones (including the RPython ones).
It should now be as complete and working as the x86-64 backend, so I believe it is ready to merge into the master branch.
I have also made some modifications to the x86-64 backend (specifically in the way it handles callee saved registers).
In addition there are some minor changes made to the non-architecture dependent parts:
* I have modified the register allocator in the way that it handles callee saved registers.
* I have modified how some things are formatted (like instructions and Value's) to make them more readable (feel free to discard these changes..)
* I have modified the tests where I noticed they were using invalid Mu code (like calling a function with a parameter of the wrong type)
* I have made some tests architecture dependent (so that they will test what they are trying to test on aarch64, which has more registers then x86-64)
* I have replaced the FREM entry point with FREM32 and FREM64 so that 32-bit and 64-bit FREM's can be implemented
* I have added some additional utility functions and constants for CmpOp and MuTypehttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/5merge with develop: fix bugs about allocation, and stack alignment, temporari...2017-04-24T14:52:37+10:00Yi Linmerge with develop: fix bugs about allocation, and stack alignment, temporarily disable register allocation validation (has bugs)https://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/4merge with develop: fix bugs around exception handling, etc, better debugging...2017-03-27T13:37:43+11:00Yi Linmerge with develop: fix bugs around exception handling, etc, better debugging output, all current tests run