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  
				
					
						
							
							
								 
						
							
							
								85a2bfab6c 
								
							
								 
							
						 
						
							
							
								
								compiler: eliminate boilerplate by centralizing info in declarative INSN: syntax  
							
							
							
						 
						
							2009-09-02 06:22:37 -05:00  
				
					
						
							
							
								 
						
							
							
								447c5fbf7a 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.live-intervals: dead-value-error is never thrown anymore  
							
							
							
						 
						
							2009-08-30 05:15:18 -05:00  
				
					
						
							
							
								 
						
							
							
								0db01f6d5f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan now supports partial sync-points where all registers are spilled; taking advantage of this, there are new trigonometric intrinsics which yield a 2x performance boost on benchmark.struct-arrays and a 25% boost on benchmark.partial-sums  
							
							
							
						 
						
							2009-08-30 04:52:01 -05:00  
				
					
						
							
							
								 
						
							
							
								8bf709acd0 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix unit tests for new fake-representations  
							
							
							
						 
						
							2009-08-26 08:58:00 -05:00  
				
					
						
							
							
								 
						
							
							
								478b960560 
								
							
								 
							
						 
						
							
							
								
								Merge branch 'master' of git://factorcode.org/git/factor  
							
							
							
						 
						
							2009-08-14 20:11:54 -05:00  
				
					
						
							
							
								 
						
							
							
								3cec74867d 
								
							
								 
							
						 
						
							
							
								
								Improving write barrier elimination; change to compiler.cfg.utilities to support this  
							
							
							
						 
						
							2009-08-14 19:41:41 -05:00  
				
					
						
							
							
								 
						
							
							
								3f3d57032b 
								
							
								 
							
						 
						
							
							
								
								Delete empty unit tests files, remove 1- and 1+, reorder IN: lines in a lot of places, minor refactoring  
							
							
							
						 
						
							2009-08-13 19:21:44 -05:00  
				
					
						
							
							
								 
						
							
							
								687454878a 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linearization: change order to fit older unit tests  
							
							
							
						 
						
							2009-08-08 23:06:57 -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  
				
					
						
							
							
								 
						
							
							
								c1c8424605 
								
							
								 
							
						 
						
							
							
								
								Compiler speedups  
							
							
							
						 
						
							2009-08-02 09:16:21 -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  
				
					
						
							
							
								 
						
							
							
								639a1cbb1f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.resolve: fix unit tests to not depend on hashing  
							
							
							
						 
						
							2009-07-29 06:48:01 -05:00  
				
					
						
							
							
								 
						
							
							
								74766d1ccd 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.assignment: modifies instructions in place instead of storing a registers assoc for further compile-time performance improvement  
							
							
							
						 
						
							2009-07-29 06:36:14 -05:00  
				
					
						
							
							
								 
						
							
							
								1532a6f2e3 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.assignment: more efficient data structures  
							
							
							
						 
						
							2009-07-29 06:12:33 -05:00  
				
					
						
							
							
								 
						
							
							
								d913d7331f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: Minor optimization. Instructions can now only ever produce a single value; this eliminates 1array constructions and some iterations  
							
							
							
						 
						
							2009-07-28 12:29:07 -05:00  
				
					
						
							
							
								 
						
							
							
								80e10f1bd0 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: Fix some unit tests  
							
							
							
						 
						
							2009-07-28 08:56:14 -05:00  
				
					
						
							
							
								 
						
							
							
								e6f5eab598 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix resolve pass  
							
							
							
						 
						
							2009-07-28 08:47:35 -05:00  
				
					
						
							
							
								 
						
							
							
								18717a449f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.resolve: unit tests  
							
							
							
						 
						
							2009-07-28 07:41:41 -05:00  
				
					
						
							
							
								 
						
							
							
								857ef94acc 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: use compiler.cfg.parallel-copy in resolve pass  
							
							
							
						 
						
							2009-07-28 07:39:46 -05:00  
				
					
						
							
							
								 
						
							
							
								b1afd4c491 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.mapping: simplify  
							
							
							
						 
						
							2009-07-23 18:03:04 -05:00  
				
					
						
							
							
								 
						
							
							
								89db2e745d 
								
							
								 
							
						 
						
							
							
								
								Move liveness back to compiler.cfg.liveness, fix a corner-case where it didn't work on some forms of non-SSA code  
							
							
							
						 
						
							2009-07-22 06:07:28 -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  
				
					
						
							
							
								 
						
							
							
								ea69566ddd 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: algorithmic optimizations  
							
							
							
						 
						
							2009-07-18 00:14:39 -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  
				
					
						
							
							
								 
						
							
							
								884e41dd9c 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.live-intervals: remove bogus assertion  
							
							
							
						 
						
							2009-07-16 02:42:01 -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  
				
					
						
							
							
								 
						
							
							
								dea872c7e3 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.allocation: fix broken spill slot reuse logic  
							
							
							
						 
						
							2009-07-10 00:25:46 -05:00  
				
					
						
							
							
								 
						
							
							
								d02854b04e 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: two live intervals which are coalesced will use the same spill slot  
							
							
							
						 
						
							2009-07-09 23:12:49 -05:00  
				
					
						
							
							
								 
						
							
							
								d0980edafe 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fixing unit tests  
							
							
							
						 
						
							2009-07-09 00:48:00 -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  
				
					
						
							
							
								 
						
							
							
								c20e6c290f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: split off parallel mapping code from resolve pass, use it in assignment pass to resolve parallel copies  
							
							
							
						 
						
							2009-07-08 23:07:06 -05:00  
				
					
						
							
							
								 
						
							
							
								e2044602aa 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: debugging spilling, add more assertions  
							
							
							
						 
						
							2009-07-07 13:01:27 -05:00  
				
					
						
							
							
								 
						
							
							
								43c873f00a 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: code cleanup  
							
							
							
						 
						
							2009-07-07 03:45: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  
				
					
						
							
							
								 
						
							
							
								4402d8652c 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: minor fixes  
							
							
							
						 
						
							2009-07-05 22:51:53 -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  
				
					
						
							
							
								 
						
							
							
								f14a61fac2 
								
							
								 
							
						 
						
							
							
								
								Fix compiler.cfg.linear-scan.resolve test failure  
							
							
							
						 
						
							2009-07-04 16:30:16 -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