Commit graph

25 commits

Author SHA1 Message Date
David Given 25b6712e63 Rework all the ackbuilder scripts not to use wildcards, because we can't expand
them without luaposix, which isn't available (easily) on OSX or Windows.
2022-07-14 23:57:54 +02:00
David Given 8200f041c2 Fix issue with logical operations and small signed constants which turned out
to affect multiple platforms.
2019-02-13 20:56:10 +01:00
David Given 79e7636537 Teach the code generator about the zero register and how to efficiently access
the stack.
2018-09-22 11:49:13 +02:00
David Given 985d3dc7d1 Remove some old, hopefully unused PowerPC code. Teach the code generator about
non-volatile long registers.
2018-09-20 23:30:38 +02:00
David Given cb20856aea A few more minor optimisations. 2018-09-20 00:39:13 +02:00
David Given 8fda024ec8 Remember to save longs and doubles. Yikes. 2018-09-19 00:09:50 +02:00
David Given d23d2dd1b3 Loads and stores (except longs, which are difficult) are now loaded with two
instructions rather than three.
2018-09-18 23:38:37 +02:00
David Given 692caa2b0a Add unsigned comparison rules. 2018-09-18 00:19:40 +02:00
David Given fe177bd688 Add specialist rules for signed integer comparisons; much better code. 2018-09-17 23:53:18 +02:00
David Given b665efca04 ACK loi 1 and sti 1 load and store unsigned bytes. I think. 2018-09-17 15:03:44 +01:00
David Given 0b65591972 Add hacky 64-bit comparisons (used by M2). 2018-09-17 12:16:17 +01:00
David Given 08b1e8d71b Make inn work; fix broken 64-bit loads and stores. 2018-09-14 13:48:43 +02:00
David Given ba0849c87c Remove la; turns out that the assembler gets upset if you ask it to
generate more than one fixup per instruction (I think).
2018-09-14 11:30:15 +02:00
David Given 8379969b6f Fix an unsubtle bug where subtractions were done backwards... 2018-09-11 23:16:50 +02:00
David Given bb15c03339 Remember to preserve input registers if we're going to be reading from them
after writing to the output register.
2018-09-09 18:53:49 +02:00
David Given e88670dad4 Yikes! Turns out that FPU registers are only 32 bits wide, and doubles are
stored in pairs, just like on the PowerPC!
2018-09-09 18:25:00 +02:00
David Given 379c1a4a3c Rework floating point conversion. Bash enough of the table into workingness
that the libraries build now.
2018-09-08 22:06:38 +02:00
David Given d2c14ca44f Precisely one stack hreg gets allocated for each vreg/congruence group for
eviction; this prevents us from having to worry about moving values from stack
slot to stack slot, which is hard.
2018-09-08 18:59:55 +02:00
David Given b7a1c96986 MIPS appears to hate converting unsigneds to floats and vice versa. 2018-09-05 23:53:38 +02:00
David Given 7fbce066f8 We attempt to compile the first library function; we fail. 2018-09-05 00:13:01 +02:00
David Given 26c0228b14 The examples all compile now (probably incorrectly, and the libc doesn't
compile yet).
2018-09-04 23:55:28 +02:00
David Given 9d80756253 Lots of assembler and rule bugfixing. 2018-09-04 23:43:24 +02:00
David Given fe5ca5a85f Added li and la instructions. 2018-09-03 22:47:41 +02:00
David Given 26f9b4ceae Add in floating point support to the code generator. 2018-09-03 22:06:05 +02:00
David Given 1d6ecddcf4 The MIPS backend is still full of holes, and cut-and-pasted PowerPC code, but
is beginning to look like an actual code generator.
2018-09-02 18:57:25 +02:00