| 
								
								
									 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 | ac921080b7 | Fix incorrect ori encoding. | 2018-09-20 00:06:26 +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 | ec0891469f | Array descriptor ranges are inclusive; adjust aar and the tests to check for this. All the tests except rotate build now! | 2018-09-17 19:34:38 +01:00 |  | 
				
					
						| 
								
								
									 David Given | f61500c51b | Fix lar and sar, which were horribly, horribly broken. Add tests. | 2018-09-17 18:44:17 +01:00 |  | 
				
					
						| 
								
								
									 David Given | abb7e3e105 | Fix aar; add test. | 2018-09-17 16:59:45 +01: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 | 0202ac8700 | Fix bls4. | 2018-09-17 12:53:27 +01:00 |  | 
				
					
						| 
								
								
									 David Given | 1e073e944a | Added cms, and a test for it. | 2018-09-17 12:42:10 +01:00 |  | 
				
					
						| 
								
								
									 David Given | 0b65591972 | Add hacky 64-bit comparisons (used by M2). | 2018-09-17 12:16:17 +01:00 |  | 
				
					
						| 
								
								
									 David Given | 15ae171aef | Added a test for set. Fix mips set implementation. | 2018-09-17 11:56:15 +01:00 |  | 
				
					
						| 
								
								
									 David Given | 7efb749003 | Set fixes; also add discrete tests for and, ior, xor. | 2018-09-14 14:13:35 +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 | 5d0876a30b | Implement a working .trp. | 2018-09-14 12:26:27 +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 | c4e3d0903e | Bugfix rck. | 2018-09-14 00:38:31 +02:00 |  | 
				
					
						| 
								
								
									 David Given | 8c0b2f8aee | Fix csa and csb. | 2018-09-14 00:15:43 +02:00 |  | 
				
					
						| 
								
								
									 David Given | 57338b1991 | Fix an incorrect instruction, and incredibly broken li handling. | 2018-09-12 23:59:09 +02:00 |  | 
				
					
						| 
								
								
									 David Given | ecb3395aba | Converting floats and doubles to integers now works, as much as these ever do on MIPS; turns out that it can't (or at least can't in qemu) reliably turn
INT_MIN from a double to an int. | 2018-09-12 23:58:48 +02:00 |  | 
				
					
						| 
								
								
									 David Given | 8105281534 | Make sure li works properly when loading fixed up values which end up as 0. Use lui rather than li to load high values. | 2018-09-12 22:28:40 +02:00 |  | 
				
					
						| 
								
								
									 David Given | 8379969b6f | Fix an unsubtle bug where subtractions were done backwards... | 2018-09-11 23:16:50 +02:00 |  | 
				
					
						| 
								
								
									 David Given | 8230ec42ac | Fix a subtle thinko which was causing bits 2-3 of jump targets to be reset. | 2018-09-11 23:16:30 +02:00 |  | 
				
					
						| 
								
								
									 David Given | 0ce368324e | Add the bitset helpers. We now have enough helpers for the tests to run (and massively fail). | 2018-09-10 23:37:28 +02:00 |  | 
				
					
						| 
								
								
									 David Given | 2f8fe3ce6e | Do some cleanup; ha16[] and friends can now be used with li. | 2018-09-10 23:37:04 +02:00 |  | 
				
					
						| 
								
								
									 David Given | 3122946a6f | Replaced some incorrect hi16s with ha16s. | 2018-09-10 23:21:54 +02:00 |  | 
				
					
						| 
								
								
									 David Given | 008737ed19 | Added some more very untested helper functions. | 2018-09-10 23:20:52 +02:00 |  | 
				
					
						| 
								
								
									 David Given | a1747ac916 | Add the .dataf4 and .dataf8 directives to the assembler --- manually converting floats and doubles to bytes is not fun. It might even work! | 2018-09-10 22:56:18 +02:00 |  | 
				
					
						| 
								
								
									 David Given | 185e910246 | Lots more untested helper functions. | 2018-09-10 01:08:25 +02:00 |  | 
				
					
						| 
								
								
									 David Given | f8f6fa9fc1 | Added some more incredibly untested helper functions. | 2018-09-10 00:21:16 +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 | 5dfef6f180 | Rework relocations again: add RELO2HI and RELO2HISAD for the high two bytes of a word. | 2018-09-09 14:11:11 +02:00 |  | 
				
					
						| 
								
								
									 David Given | 95dd6f0141 | Fix some niggling issues --- we have our first binary now! | 2018-09-09 12:24:22 +02:00 |  | 
				
					
						| 
								
								
									 David Given | b3b7c684c6 | Simplify MIPS relocations. Add RELS2 (for generic high-word relocations). Add support for MIPS branch-and-jump relocations. | 2018-09-09 12:23:59 +02:00 |  | 
				
					
						| 
								
								
									 David Given | d2a1d4dcda | Added some very untested csa and csb implementations, based on the PowerPC ones. | 2018-09-08 23:12:57 +02:00 |  | 
				
					
						| 
								
								
									 David Given | 75308901bc | Added hi[] and lo[] functions to the assembler; fix things enough that we now get to the point of failing to link programs. | 2018-09-08 22:42:06 +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 | 26fe3f7530 | Added library skeletons. | 2018-09-05 00:07:07 +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 |  |