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 |
|