NyuziToolchain
NyuziToolchain copied to clipboard
Port of LLVM/Clang C compiler to Nyuzi parallel processor architecture
As reported in https://github.com/jbush001/NyuziProcessor/issues/193 ninja 1.9.0 crashes when building the toolchain. This worked correctly with ninja 1.5.5.
Travis had a timeout for builds that was too short to build this project. Now that github has integrated CI that has a much longer timeout, make automated builds of...
Nyuzi assembly uses a minimal assembly form with no sigils (character prefixes that indicate type). However, when there are typos, this can result in confusing error messages and may let...
The following code: void* memset(void *dst, int c, unsigned int n) { int i; for (i = 0; i < n; i++) ((char*) dst)[i] = c; return dst; } With...
The following program: ```c #define CALLOC_SIZE 1024 void *ptr; int i; ptr = calloc(CALLOC_SIZE, 4); for (i = 0; i < CALLOC_SIZE; i++) { if (((unsigned int*) ptr)[i] != 0)...
All code is at O0, big and slow.
Currently the urem/udiv instructions generate calls to __udivdsi/etc... There is code in LLVM that will create expand division with IR. Should call this instead, which will probably generate better code:...
Currently, this is set to expand in NyuziISelLowering. This converts it to an atomic swap, which isn't necessary. Should simplify it to a store/membar.
Currently backend is hardcoded to use static linking model. Add support to compile as position independent code. This would save allow loading shared libraries in an efficient way. - NyuziISelLowering::LowerGlobalAddress...
A vararg function pushes all parameters on the stack. The problem is that, if a prototype is not provided, the compiler uses the normal ABI and puts the parameters in...