d48c72a274 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: fix unit tests  
							
							
							
						 
						
							2009-10-15 06:01:46 -05:00  
				
					
						
							
							
								 
						
							
							
								5b40fc6533 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix unit test  
							
							
							
						 
						
							2009-10-05 18:21:58 -05:00  
				
					
						
							
							
								 
						
							
							
								2de6ab9e21 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix tests for hash order  
							
							
							
						 
						
							2009-09-27 23:35:56 -05:00  
				
					
						
							
							
								 
						
							
							
								705b4ab5c3 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix partial sync point logic in case where dst == src, and clean up spilling code  
							
							
							
						 
						
							2009-09-27 19:28:20 -05:00  
				
					
						
							
							
								 
						
							
							
								4d5a4222b6 
								
							
								 
							
						 
						
							
							
								
								More SIMD work  
							
							... 
							
							
							
							- Rename SIMD types and register representations: <type>-<count> rather than <count><type>-array
- Make a functor to define 256-bit vector types, use it to define float-8 type
- Make SIMD instructions pure-insns so that they participate in value numbering 
							
						 
						
							2009-09-03 20:58:56 -05:00  
				
					
						
							
							
								 
						
							
							
								8bf709acd0 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix unit tests for new fake-representations  
							
							
							
						 
						
							2009-08-26 08:58:00 -05:00  
				
					
						
							
							
								 
						
							
							
								d0c393aa60 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: new system to track when results of analyses need to be recomputed (reverse post order, linear order, predecessors, dominance, loops). Passes can now call needs-predecessors, needs-dominance, needs-loops at the beginning, and cfg-changed, predecessors-changd at the end. Linearization order now takes loop nesting into account, and linear scan now uses linearization order instead of RPO.  
							
							
							
						 
						
							2009-08-08 20:02:56 -05:00  
				
					
						
							
							
								 
						
							
							
								4b7ba38aab 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: virtual registers are integers now, and representations are stored off to the side. Fix bug in representation selection that would manifest if a value was used as a float and a fixnum in different branches; cannot globally unbox float in this case  
							
							
							
						 
						
							2009-08-08 04:02:18 -05:00  
				
					
						
							
							
								 
						
							
							
								725280d424 
								
							
								 
							
						 
						
							
							
								
								Split off the notion of a register representation from a register class  
							
							
							
						 
						
							2009-08-07 17:44:50 -05:00  
				
					
						
							
							
								 
						
							
							
								370f4c081d 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: convert code into two-operand form before SSA destruction; SSA destruction now operates on a relaxed SSA form where multiple defs of the same vreg are allowed, but only within a single basic block. This makes linear scan's coalescing redundant, allowing it to be removed completely  
							
							
							
						 
						
							2009-08-05 18:57:46 -05:00  
				
					
						
							
							
								 
						
							
							
								e1c7f7394a 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: clean up unit tests using some new utilities  
							
							
							
						 
						
							2009-08-02 03:49:25 -05:00  
				
					
						
							
							
								 
						
							
							
								791fbe4003 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix case where a register can be made available for only a part of a live interval's lifetime, but there are no more usages after the split location. This case never came up until global stack analysis, at which point it started to be exercised on x86-32  
							
							
							
						 
						
							2009-07-30 02:13:30 -05:00  
				
					
						
							
							
								 
						
							
							
								cb36a40dc4 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: more test fixes  
							
							
							
						 
						
							2009-07-29 07:04:52 -05:00  
				
					
						
							
							
								 
						
							
							
								1532a6f2e3 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.assignment: more efficient data structures  
							
							
							
						 
						
							2009-07-29 06:12:33 -05:00  
				
					
						
							
							
								 
						
							
							
								21a012e3d7 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: Major restructuring -- do not compute liveness before local optimization, and instead change local optimizations to be more permissive of undefined values. Now, liveness is only computed once, after phi elimination and before register allocation. This means liveness analysis does not need to take phi nodes into account and can now use the new compiler.cfg.dataflow-analysis framework  
							
							
							
						 
						
							2009-07-22 03:08:28 -05:00  
				
					
						
							
							
								 
						
							
							
								32e4a97855 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix tests  
							
							
							
						 
						
							2009-07-18 06:10:01 -05:00  
				
					
						
							
							
								 
						
							
							
								e76dce8aff 
								
							
								 
							
						 
						
							
							
								
								Overflowing fixnum intrinsics now expand into several CFG nodes. This speeds up the common case since only the uncommon case is now a stack syncpoint  
							
							
							
						 
						
							2009-07-16 18:29:40 -05:00  
				
					
						
							
							
								 
						
							
							
								c860a3b1e6 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: update unit tests for compiler.cfg.comparisons  
							
							
							
						 
						
							2009-07-14 12:06:55 -05:00  
				
					
						
							
							
								 
						
							
							
								8ff473e42c 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.resolve: get it to work on CFGs with critical edges  
							
							
							
						 
						
							2009-07-12 23:00:33 -05:00  
				
					
						
							
							
								 
						
							
							
								1cf6bb7f99 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: disable unit test for unimplemented feature  
							
							
							
						 
						
							2009-07-10 07:48:49 -05:00  
				
					
						
							
							
								 
						
							
							
								ae67de6f90 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix fencepost error in spill insertion  
							
							
							
						 
						
							2009-07-10 03:58:51 -05:00  
				
					
						
							
							
								 
						
							
							
								5a64290386 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: more code cleanups, and working on split-to-fit algorithm  
							
							
							
						 
						
							2009-07-09 00:20:03 -05:00  
				
					
						
							
							
								 
						
							
							
								4507bdcbc0 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: code cleanups  
							
							
							
						 
						
							2009-07-08 23:28:28 -05:00  
				
					
						
							
							
								 
						
							
							
								e2044602aa 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: debugging spilling, add more assertions  
							
							
							
						 
						
							2009-07-07 13:01:27 -05:00  
				
					
						
							
							
								 
						
							
							
								0bcf4ce535 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: Re-implement spilling, add some additional runtime assertions, simplify assignment pass since it doesn't have to track spill slots anymore; just assume a live value that's not in active or inactive is spilled  
							
							
							
						 
						
							2009-07-07 03:28:55 -05:00  
				
					
						
							
							
								 
						
							
							
								a452f32e3a 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: Get cycle breaking in resolve pass to work by allocating a spare spill slot for this purpose  
							
							
							
						 
						
							2009-07-05 21:32:23 -05:00  
				
					
						
							
							
								 
						
							
							
								c00af97fa1 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.resolve: More fixes  
							
							
							
						 
						
							2009-07-04 00:45:06 -05:00  
				
					
						
							
							
								 
						
							
							
								da13681bc8 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: redo resolve pass to fix a correctness issue  
							
							
							
						 
						
							2009-07-03 23:38:52 -05:00  
				
					
						
							
							
								 
						
							
							
								a19f22ec82 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: debugging spilling and resolve pass  
							
							
							
						 
						
							2009-07-01 17:41:07 -05:00  
				
					
						
							
							
								 
						
							
							
								578b0126fc 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: compute-free-pos was broken in the case where more than one inactive interval had the same physical register assigned  
							
							
							
						 
						
							2009-06-30 16:07:58 -05:00  
				
					
						
							
							
								 
						
							
							
								96baede36a 
								
							
								 
							
						 
						
							
							
								
								Redesign compiler.cfg.stack-analysis to make compiler.cfg.height redundant, and to fix some problems  
							
							
							
						 
						
							2009-06-26 17:29:55 -05:00  
				
					
						
							
							
								 
						
							
							
								f3cf8fad2b 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix unit tests  
							
							
							
						 
						
							2009-06-24 13:54:12 -05:00  
				
					
						
							
							
								 
						
							
							
								387f6df9e5 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: Debugging resolve pass  
							
							
							
						 
						
							2009-06-22 00:24:51 -05:00  
				
					
						
							
							
								 
						
							
							
								5a78956956 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: Working on resolve pass  
							
							
							
						 
						
							2009-06-21 00:20:01 -05:00  
				
					
						
							
							
								 
						
							
							
								5c912504d7 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: untangle add-active/delete-active/add-handled calls in spilling, replace 'sort-values last' with 'alist-max' in compiler.utilities  
							
							
							
						 
						
							2009-06-19 18:28:30 -05:00  
				
					
						
							
							
								 
						
							
							
								1f5f8393c3 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: Further progress on inactive interval handling  
							
							
							
						 
						
							2009-06-17 15:27:20 -05:00  
				
					
						
							
							
								 
						
							
							
								64f93e41a9 
								
							
								 
							
						 
						
							
							
								
								Various linear scan fixes  
							
							... 
							
							
							
							insert spill before reload to fix x86-32 regression
inactive splitting: if all inactive intervals' registers are in use, don't fail
fix stack analysis tests 
							
						 
						
							2009-06-13 17:35:40 -05:00  
				
					
						
							
							
								 
						
							
							
								d0f6a7d048 
								
							
								 
							
						 
						
							
							
								
								Split up compiler.cfg.linear-scan.allocation into a number of sub-vocabularies; start work on compiler.cfg.linear-scan.resolve; start work on inactive interval splitting  
							
							
							
						 
						
							2009-06-11 17:55:14 -05:00  
				
					
						
							
							
								 
						
							
							
								70b75b8dea 
								
							
								 
							
						 
						
							
							
								
								Linear scan: implement live range intersection  
							
							
							
						 
						
							2009-06-06 01:04:12 -05:00  
				
					
						
							
							
								 
						
							
							
								04c72d0a72 
								
							
								 
							
						 
						
							
							
								
								Linear scan: correctly compute live spill slots  
							
							
							
						 
						
							2009-06-05 18:06:47 -05:00  
				
					
						
							
							
								 
						
							
							
								81b2a39070 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: re-do interval splitting to operate on live ranges; add inactive set processing  
							
							
							
						 
						
							2009-06-04 18:53:02 -05:00  
				
					
						
							
							
								 
						
							
							
								6d04bf9c4a 
								
							
								 
							
						 
						
							
							
								
								Linear scan: build live ranges  
							
							
							
						 
						
							2009-06-03 03:22:27 -05:00  
				
					
						
							
							
								 
						
							
							
								9e987e8642 
								
							
								 
							
						 
						
							
							
								
								Merge branch 'master' into global_optimization  
							
							
							
						 
						
							2009-06-01 03:12:32 -05:00  
				
					
						
							
							
								 
						
							
							
								e04df76f60 
								
							
								 
							
						 
						
							
							
								
								Various codegen improvements:  
							
							... 
							
							
							
							- new-insn word to construct instructions
- cache RPO in the CFG
- re-organize low-level optimizer so that MR is built after register allocation
- register allocation now stores instruction numbers in the instructions themselves
- split defs-vregs into defs-vregs and temp-vregs 
							
						 
						
							2009-05-29 13:11:34 -05:00  
				
					
						
							
							
								 
						
							
							
								407377fc98 
								
							
								 
							
						 
						
							
							
								
								rename peek -> last and update all usages  
							
							
							
						 
						
							2009-05-25 16:38:33 -05:00  
				
					
						
							
							
								 
						
							
							
								ca2f01e0d0 
								
							
								 
							
						 
						
							
							
								
								Updating non-core libraries for monotonic? change  
							
							
							
						 
						
							2009-01-16 17:02:54 -06:00  
				
					
						
							
							
								 
						
							
							
								34792a9f23 
								
							
								 
							
						 
						
							
							
								
								Remove >r/r>  
							
							
							
						 
						
							2008-12-17 19:17:37 -06:00  
				
					
						
							
							
								 
						
							
							
								1af3b8ed65 
								
							
								 
							
						 
						
							
							
								
								If a register is spilled and the reload location is also a copy, we chicken out and don't coalesce. This is suboptimal but it's not clear to me how to implement it cleanly, and SSA graph coloring will solve this problem eventually anyway  
							
							
							
						 
						
							2008-11-04 00:32:56 -06:00  
				
					
						
							
							
								 
						
							
							
								0250d7c1d2 
								
							
								 
							
						 
						
							
							
								
								Forgot a drop in unit test  
							
							
							
						 
						
							2008-11-03 01:53:27 -06:00  
				
					
						
							
							
								 
						
							
							
								8df1aba71d 
								
							
								 
							
						 
						
							
							
								
								Coalescing  
							
							
							
						 
						
							2008-11-02 01:49:57 -06:00