Jakub Doka
6e8eb059f6
adding tuples
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-19 23:08:36 +01:00
Jakub Doka
cfd3eac0a8
making the instruction scheduling smarter
...
the instructions that are only depended by phis are pushed to the end of
the block, which usually saves copy instructions
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-19 11:00:19 +01:00
Jakub Doka
a8aba7e7c2
making the Call node less special
...
return value is now a separate node pinned to the call
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-19 10:48:05 +01:00
Jakub Doka
1584ec7563
adding @Any directive
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-17 21:11:02 +01:00
Jakub Doka
945e5c70f6
extractng Nodes from son.rs
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-17 00:18:44 +01:00
Jakub Doka
1ca9529302
fixing missing antidependencies
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-16 17:37:14 +01:00
Jakub Doka
1571938e9f
bools can now upcast to any integer
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-16 13:54:52 +01:00
Jakub Doka
b2be007ef0
adding unrolled loops, struct indexing and @len
directive
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-16 13:20:47 +01:00
Jakub Doka
7837eeb90d
implementing the loop iteration optimization
...
the multiplication and addition to a pointer is replaced with simply
incremrnting the pointer it self
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-15 19:37:37 +01:00
Jakub Doka
5a7a01ca02
adding the stack offset elision for return values as well
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-15 17:57:22 +01:00
Jakub Doka
f9c47f86ad
fixing a glaring bug, where the elidded offset is also offset
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-15 17:42:20 +01:00
Jakub Doka
48a0c8d0b9
POC for removeing needless stack offset computes when only value is used
...
TBD: there are far more cases where this will apply
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-15 17:17:41 +01:00
Jakub Doka
dc96c8b10a
the items accesed outside the nested scope no longer get duplicated
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-14 18:50:13 +01:00
Jakub Doka
5aeeedbdce
fixing non pointer struct method receiver not counting as use
...
forgot to strip pointer
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-14 15:19:02 +01:00
Jakub Doka
9ce446b507
Adding the simplest version of unions
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-01 15:11:38 +01:00
Jakub Doka
3b4b30b2bd
Restructuring the compiler
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-12-01 14:01:44 +01:00
Jakub Doka
3f6ebdd009
fixing phi moves (longer move cycles)
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-11-30 22:33:13 +01:00
Jakub Doka
19aca050ed
add new ableos path resolver, separate platform independent code
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-11-30 18:57:29 +01:00
Jakub Doka
8ea6c5cfcc
fixing miscompilation of generic struct functions
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-11-30 16:30:58 +01:00
Jakub Doka
e44d003e7f
completing the generic types example
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-11-30 13:38:44 +01:00
Jakub Doka
a2ca8d98df
fixing a bug with floationg point comparison
...
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2024-11-30 12:40:39 +01:00
Jakub Doka
a3355a59c0
update on incomplete example
2024-11-24 18:55:30 +01:00
Jakub Doka
116f045a5f
adding defer
2024-11-24 18:50:55 +01:00
Jakub Doka
24a3aed360
implementing struct method for non generic contexts
2024-11-24 16:17:57 +01:00
Jakub Doka
58ee5c0a56
in progress of adding methods
2024-11-24 14:47:38 +01:00
Jakub Doka
9dfb2eb606
fg
2024-11-24 11:26:38 +01:00
Jakub Doka
5df4fb8882
changing the gcm to not mutate nodes in recursive functions
2024-11-23 19:47:17 +01:00
Jakub Doka
cad0a828d0
updating tests
2024-11-23 15:28:27 +01:00
Jakub Doka
4a857d2317
garbage
2024-11-22 19:50:59 +01:00
Jakub Doka
2253ac6198
fixing some bugs
2024-11-22 19:50:36 +01:00
Jakub Doka
95e9270fef
adding case checking
2024-11-17 20:04:53 +01:00
Jakub Doka
12b9d43754
adding minimal enums
2024-11-17 16:25:39 +01:00
Jakub Doka
397b2a4b1b
fixed a stack prelude postlude being needlesly generated + struct can now be compared
2024-11-17 10:06:10 +01:00
Jakub Doka
e5d6b35f66
removing needless copies to zero register for unused values
2024-11-16 13:42:17 +01:00
Jakub Doka
baa70d3f12
removing needless copy into ret register
2024-11-16 10:16:35 +01:00
Jakub Doka
ec4499e519
removing duplicate un instruction
2024-11-16 10:05:56 +01:00
Jakub Doka
12be64965f
maybe fixed mandelbrot
2024-11-15 22:35:03 +01:00
Jakub Doka
afc1c5aac5
orginizing null checks better to get more peephole hits
2024-11-15 14:36:33 +01:00
Jakub Doka
981c17ff19
fixing function destinations
2024-11-14 20:25:52 +01:00
Jakub Doka
d01e31b203
fixing stack return values
2024-11-13 16:18:21 +01:00
Jakub Doka
f524013c34
making use of zero register
2024-11-13 10:28:16 +01:00
Jakub Doka
3c86eafe72
fixing another problem with rescheduling
2024-11-13 08:49:25 +01:00
Jakub Doka
dd51961fbb
adding assert for better error
2024-11-12 21:10:42 +01:00
Jakub Doka
4ec88e3397
adding pointer edgecase
2024-11-12 20:42:04 +01:00
Jakub Doka
f1e715e9bd
refactoring truncation
2024-11-12 19:02:29 +01:00
Jakub Doka
9949086011
allowing eca in inline functions
2024-11-12 17:11:39 +01:00
Jakub Doka
c701eb7b6d
adding extra test
2024-11-12 12:54:36 +01:00
Jakub Doka
f1deab11c9
making better peepholes and fixing overoptimization on memory swaps
2024-11-12 12:20:08 +01:00
Jakub Doka
7def052749
preventing dangling nodes due to cycles in loop phys
2024-11-11 21:55:18 +01:00
Jakub Doka
3c35557872
fixing type variables in loops
2024-11-11 09:06:34 +01:00