George Koehler 
								
							 
						 
						
							
							
							
							
								
							
							
								436114fce4 
								
							 
						 
						
							
							
								
								Add a move from CONST smalls(%val) to GPR.  
							
							 
							
							... 
							
							
							
							This allows 'move {CONST, $1}, R3' with a small enough $1 to emit one
instruction (addi) instead of two instructions (addis, ori).  The
CONST token confusingly isn't in the CONST_ALL set. 
							
						 
						
							2016-12-09 18:40:14 -05:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									George Koehler 
								
							 
						 
						
							
							
							
							
								
							
							
								17211eef47 
								
							 
						 
						
							
							
								
								Fix ass to match the EM spec.  
							
							 
							
							... 
							
							
							
							The spec says, "ASS w: Adjust the stack pointer by w-byte integer".
The w argument "can either be given as argument or on top of the
stack."  Therefore, 'ass 4' would pop the 4-byte integer from the
stack, but 'ass' would pop the size w from the stack, then pop the
w-byte integer.
PowerPC ncg wrongly implemented 'ass' as if it was 'ass 4'.  Fix it to
accept only 'ass 4'. 
							
						 
						
							2016-12-09 17:32:42 -05:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									George Koehler 
								
							 
						 
						
							
							
							
							
								
							
							
								5bd0ad4269 
								
							 
						 
						
							
							
								
								Remove the bogus rules for 'lor 2' and 'str 2'.  
							
							 
							
							... 
							
							
							
							These instructions would load or store the EM heap pointer.  They
don't work.  Programs must use brk() or sbrk() in libsys.
The last file to use 'lor 2' and 'str 2' was lang/pc/libpc/sav.e in
the Pascal library.  Commit c084f9f  deleted the file, so we no longer
need rules 'lor 2' or 'str 2' to build the ACK. 
							
						 
						
							2016-12-09 17:00:56 -05:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									George Koehler 
								
							 
						 
						
							
							
							
							
								
							
							
								805883e377 
								
							 
						 
						
							
							
								
								Fill in a hint for enabling the COMMENT macro.  
							
							 
							
							... 
							
							
							
							If you want to enable comments in the .s file, change
    #define COMMENT(n) /* comment {LABEL, n} */
to
    #define COMMENT(n) comment {LABEL, n} 
							
						 
						
							2016-12-09 16:58:47 -05:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									George Koehler 
								
							 
						 
						
							
							
							
							
								
							
							
								244e554f2f 
								
							 
						 
						
							
							
								
								Remove trailing whitespace in mach/powerpc/ncg/table  
							
							 
							
							
							
						 
						
							2016-12-09 16:36:42 -05:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									George Koehler 
								
							 
						 
						
							
							
							
							
								
							
							
								b8c921ca70 
								
							 
						 
						
							
							
								
								Allow mfspr, mtspr with a register number.  
							
							 
							
							... 
							
							
							
							PowerPC has a few hundred special-purpose registers.  The assembler
had only accepted the names "xer", "lr", "ctr".  Most programs use
only those three SPRs.  If I add more names, they would almost never
get used, and they might conflict with labels.
I want to use "mfspr r3, 0x3f0" and "mtspr 0x3f0, r3" in
plat/qemu/boot.s to access register hid0 from supervisor mode. 
							
						 
						
							2016-12-07 17:28:00 -05:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								55e24e1f24 
								
							 
						 
						
							
							
								
								inn was assuming that bitfields were arrays of bytes, when actually they're  
							
							 
							
							... 
							
							
							
							arrays of words (which makes the LSB move on big-endian systems). 
							
						 
						
							2016-12-06 21:45:20 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								fbd6e8f63d 
								
							 
						 
						
							
							
								
								Add support for consecutive labels; needed by the B compiler.  
							
							 
							
							
							
						 
						
							2016-11-27 21:18:00 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								5bce5fc4da 
								
							 
						 
						
							
							
								
								Change the extension used by Basic files for .b to .bas, to avoid conflicts  
							
							 
							
							... 
							
							
							
							with B. 
							
						 
						
							2016-11-27 20:38:33 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								f8fa3ece42 
								
							 
						 
						
							
							
								
								inn on ncg now passes the CPU tests.  
							
							 
							
							
							
						 
						
							2016-11-20 19:35:34 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								953c08839f 
								
							 
						 
						
							
							
								
								inn works now; add a helper for it.  
							
							 
							
							
							
						 
						
							2016-11-20 12:53:44 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								196fa914b3 
								
							 
						 
						
							
							
								
								lxa now works, I hope; traps are better (and stubbed out on qemuppc).  
							
							 
							
							
							
						 
						
							2016-11-20 11:57:21 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								d5328492d7 
								
							 
						 
						
							
							
								
								Better handling of float conversions; more tests; converting to unsigned ints  
							
							 
							
							... 
							
							
							
							works now. 
							
						 
						
							2016-11-20 11:27:40 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								454a7494bb 
								
							 
						 
						
							
							
								
								cif8 and cuf8 work now. More tests.  
							
							 
							
							
							
						 
						
							2016-11-19 11:42:30 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								cc660b230f 
								
							 
						 
						
							
							
								
								Floats and doubles are now written out correctly.  
							
							 
							
							
							
						 
						
							2016-11-19 11:39:13 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								d31bc6a3f9 
								
							 
						 
						
							
							
								
								Made csa and csb work with mcg; adjust the libem functions and the  
							
							 
							
							... 
							
							
							
							corresponding invocation in the ncg table so the same helpers can be used for
both mcg and ncg. Add a new IR opcode, FARJUMP, which jumps to a helper
function but saves volatile registers. 
							
						 
						
							2016-11-19 10:55:41 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								5208e5f751 
								
							 
						 
						
							
							
								
								Yet another OB1 stack format fix.  
							
							 
							
							
							
						 
						
							2016-11-19 10:42:22 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								43439c6d0c 
								
							 
						 
						
							
							
								
								Remember to push the result of lor onto the stack.  
							
							 
							
							
							
						 
						
							2016-11-17 22:04:32 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								81bc2c74c5 
								
							 
						 
						
							
							
								
								A bb's regsin are no longer the same as those of its first instruction;  
							
							 
							
							... 
							
							
							
							occasionally the first hop of a block would try to rearrange its registers (due
to evicted throughs), resulting in the phi moves copying values into the wrong
registers. 
							
						 
						
							2016-11-16 20:52:15 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								581fa4a457 
								
							 
						 
						
							
							
								
								Reenable eviction of corrupted registers, which had been broken by a previous  
							
							 
							
							... 
							
							
							
							change. Change the register move code to get swaps right, or at least righter. 
							
						 
						
							2016-11-15 21:55:10 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								86c832ef86 
								
							 
						 
						
							
							
								
								Put saved registers in *actually* the write place. I hope.  
							
							 
							
							
							
						 
						
							2016-11-15 21:54:15 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								cc686ded62 
								
							 
						 
						
							
							
								
								Get subtractions the right way round.  
							
							 
							
							
							
						 
						
							2016-11-15 20:25:11 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								0289b1004e 
								
							 
						 
						
							
							
								
								Allow values left on the stack at the end of the procedure (it's legal!).  
							
							 
							
							
							
						 
						
							2016-11-14 21:47:49 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								e7132183fb 
								
							 
						 
						
							
							
								
								Fix buffer overrun: if LABEL_STARTER is seen but LABEL_TERMINATOR is not, the  
							
							 
							
							... 
							
							
							
							label parser will keep going forever looking for the end of the label. It now
stops at the end of the string. 
							
						 
						
							2016-11-13 14:04:58 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								852d3a691d 
								
							 
						 
						
							
							
								
								Update the table to return call output values in the right registers. Fix the  
							
							 
							
							... 
							
							
							
							register allocator so the corrupted registers only apply to throughs
(otherwise, you can't put output registers in corrupted registers). 
							
						 
						
							2016-11-11 21:48:36 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								b5c1d622f5 
								
							 
						 
						
							
							
								
								Rework the way stack frames are laid out to be simpler and, hopefully, more  
							
							 
							
							... 
							
							
							
							correct. Saved registers are now placed in what may be the right place. 
							
						 
						
							2016-11-11 21:17:45 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								84ee75ec07 
								
							 
						 
						
							
							
								
								Merge from default.  
							
							 
							
							
							
						 
						
							2016-11-11 20:17:54 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								d82df74a7a 
								
							 
						 
						
							
							
								
								Rename addr_t to address_t to avoid clashes with the system addr_t.  
							
							 
							
							
							
						 
						
							2016-11-11 20:17:10 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								fd91851005 
								
							 
						 
						
							
							
								
								Add enough return types to the K&R C that the ACK builds (on Linux) using clang  
							
							 
							
							... 
							
							
							
							now. 
							
						 
						
							2016-11-10 22:04:18 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								4fa2c94a4a 
								
							 
						 
						
							
							
								
								Correctly mangle labels used in initialisers.  
							
							 
							
							
							
						 
						
							2016-10-31 23:21:33 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								9261cd978d 
								
							 
						 
						
							
							
								
								Typo fix.  
							
							 
							
							
							
						 
						
							2016-10-31 23:16:02 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								941072e0d7 
								
							 
						 
						
							
							
								
								Add, I hope, patterns for fmsub, fnmadd, and fnmsub (also float versions).  
							
							 
							
							
							
						 
						
							2016-10-31 22:36:54 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								44f0cea6ca 
								
							 
						 
						
							
							
								
								Also use fmadd for single-precision floats.  
							
							 
							
							
							
						 
						
							2016-10-31 19:55:16 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								064d1a5d5d 
								
							 
						 
						
							
							
								
								Use fmadd for multiply-and-add instructions.  
							
							 
							
							
							
						 
						
							2016-10-31 19:52:17 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								e19850b114 
								
							 
						 
						
							
							
								
								Fix a few c11isms.  
							
							 
							
							
							
						 
						
							2016-10-30 16:51:06 +01:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								ca5b6e07bb 
								
							 
						 
						
							
							
								
								Properly export symbols.  
							
							 
							
							
							
						 
						
							2016-10-29 23:52:17 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								8c3670483f 
								
							 
						 
						
							
							
								
								Get top working with the PowerPC; use it to eliminate useless branches and  
							
							 
							
							... 
							
							
							
							moves. 
							
						 
						
							2016-10-29 23:37:11 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								a8c4dac67c 
								
							 
						 
						
							
							
								
								Merge from default (merging in George Koehler's PowerPC changes).  
							
							 
							
							
							
						 
						
							2016-10-29 22:40:40 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								a311e61360 
								
							 
						 
						
							
							
								
								Add support for preserved registers.  
							
							 
							
							
							
						 
						
							2016-10-29 20:22:44 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								e3ebf986e9 
								
							 
						 
						
							
							
								
								More opcodes.  
							
							 
							
							
							
						 
						
							2016-10-29 13:32:09 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								1ae8b90238 
								
							 
						 
						
							
							
								
								More opcodes.  
							
							 
							
							
							
						 
						
							2016-10-29 12:55:34 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								acaae765af 
								
							 
						 
						
							
							
								
								Emit negative constants correctly.  
							
							 
							
							
							
						 
						
							2016-10-29 12:55:21 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								61349389fb 
								
							 
						 
						
							
							
								
								More opcodes. sti can now cope with non-standard sizes (really need a better  
							
							 
							
							... 
							
							
							
							fix for this). Hack in crude support for mismatched stack pushes and pops (ints
vs longs). 
							
						 
						
							2016-10-29 12:48:05 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								68419da235 
								
							 
						 
						
							
							
								
								Actually, the locals need to go above the spills and saved regs, so fp == lb.  
							
							 
							
							
							
						 
						
							2016-10-29 12:00:33 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								2cc2c0ae98 
								
							 
						 
						
							
							
								
								Lots more opcodes. Rearrange the stack layout so that fp->ab is a fixed value  
							
							 
							
							... 
							
							
							
							(needed for CHAINFP and FPTOAB). Wire up lfrs to calls via a phi when
necessary, to allow call-bra-lfr chains. 
							
						 
						
							2016-10-29 11:57:56 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								bfa65168e2 
								
							 
						 
						
							
							
								
								Don't generate phis if unnecessary (because this breaks the  
							
							 
							
							... 
							
							
							
							critical-edge-splitting guarantee and causes insertion of phi copies to fail). 
							
						 
						
							2016-10-29 10:55:48 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								658db4ba71 
								
							 
						 
						
							
							
								
								Mangle label names (turns out that the ACK assembler can't really cope with  
							
							 
							
							... 
							
							
							
							labels that are the same name as instructions...). 
							
						 
						
							2016-10-27 23:17:16 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								81525c0f2c 
								
							 
						 
						
							
							
								
								Swaps work (at least for registers). More opcodes. Rearrange the stack layout  
							
							 
							
							... 
							
							
							
							so we can always trivially find fp, which lets CHAINFP work. 
							
						 
						
							2016-10-27 21:50:58 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								be3dece5af 
								
							 
						 
						
							
							
								
								Allow emission of strings containing ".  
							
							 
							
							
							
						 
						
							2016-10-27 21:48:46 +02:00  
						
						
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									David Given 
								
							 
						 
						
							
							
							
							
								
							
							
								51bd3ee4dd 
								
							 
						 
						
							
							
								
								Fix bug where some phis weren't being inserted when a given variable definition  
							
							 
							
							... 
							
							
							
							needed more than one phi (due to the dominance frontier containing more than
one basic block). 
							
						 
						
							2016-10-27 21:40:25 +02:00