daff63071f 
								
							
								 
							
						 
						
							
							
								
								Fix the build  
							
							
							
						 
						
							2009-09-09 13:44:54 -05:00  
				
					
						
							
							
								 
						
							
							
								15d85c1c4f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.save-contexts: add new pass  
							
							
							
						 
						
							2009-09-08 21:56:28 -05:00  
				
					
						
							
							
								 
						
							
							
								7e2f0e5dbf 
								
							
								 
							
						 
						
							
							
								
								compiler: separate ##save-context instruction from ##alien-invoke, generate a ##save-context for libm calls, and add a pass to combine multiple context saves within a basic block. Fixes crashes with FP traps thrown by libm functions on x86-32  
							
							
							
						 
						
							2009-09-08 21:50:55 -05:00  
				
					
						
							
							
								 
						
							
							
								0ea9949e51 
								
							
								 
							
						 
						
							
							
								
								split unordered and ordered float comparison intrinsics in compiler; generate only unordered comparisons for now  
							
							
							
						 
						
							2009-09-08 17:04:26 -05:00  
				
					
						
							
							
								 
						
							
							
								a0e1af5891 
								
							
								 
							
						 
						
							
							
								
								Merge branch 'master' of git://factorcode.org/git/factor  
							
							
							
						 
						
							2009-09-08 14:22:52 -05:00  
				
					
						
							
							
								 
						
							
							
								1e5bc3b376 
								
							
								 
							
						 
						
							
							
								
								inline alien-vector and set-alien-vector if SIMD is not available for a small speedup  
							
							
							
						 
						
							2009-09-08 13:56:17 -05:00  
				
					
						
							
							
								 
						
							
							
								942fb7b048 
								
							
								 
							
						 
						
							
							
								
								Merge branch 'master' of git://factorcode.org/git/factor  
							
							
							
						 
						
							2009-09-08 13:22:52 -05:00  
				
					
						
							
							
								 
						
							
							
								bbca00e2ae 
								
							
								 
							
						 
						
							
							
								
								Fix conflicts  
							
							
							
						 
						
							2009-09-07 23:51:25 -05:00  
				
					
						
							
							
								 
						
							
							
								9f9b6bca01 
								
							
								 
							
						 
						
							
							
								
								compiler.tree.propagation: type check inputs to unsafe foldable words manually, so that stuff like [ "Hi" { } fixnum+fast ] doesn't crash in the compiler  
							
							
							
						 
						
							2009-09-07 23:40:23 -05:00  
				
					
						
							
							
								 
						
							
							
								a1ae209f81 
								
							
								 
							
						 
						
							
							
								
								compiler.tree.propagation.call-effect: stronger call( inlining; now can inline 'a [ b ] curry call(' where 'a' is literal, [ b ] doesn't infer, but [ a b ] does infer. This simplifies classes.struct:memory>struct  
							
							
							
						 
						
							2009-09-07 17:45:03 -05:00  
				
					
						
							
							
								 
						
							
							
								7c04b912bb 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.value-numbering: update tests for Joe's condition code changes  
							
							
							
						 
						
							2009-09-04 03:11:56 -05:00  
				
					
						
							
							
								 
						
							
							
								4a2823b2eb 
								
							
								 
							
						 
						
							
							
								
								compiler: tweak generated code  
							
							
							
						 
						
							2009-09-04 03:01:18 -05:00  
				
					
						
							
							
								 
						
							
							
								e11d1e37f5 
								
							
								 
							
						 
						
							
							
								
								math.vectors.simd: allow punning SIMD vectors between types  
							
							
							
						 
						
							2009-09-04 02:35:58 -05:00  
				
					
						
							
							
								 
						
							
							
								c92e54b560 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.intrinsics: fix type detection on the alien type for vector accessors  
							
							
							
						 
						
							2009-09-04 02:22:54 -05:00  
				
					
						
							
							
								 
						
							
							
								e36a0d7ef4 
								
							
								 
							
						 
						
							
							
								
								compiler: clean up code generation for alien boxing/unboxing a bit  
							
							
							
						 
						
							2009-09-03 21:22:43 -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  
				
					
						
							
							
								 
						
							
							
								036ff77306 
								
							
								 
							
						 
						
							
							
								
								add compiler comparison codes for floating-point unordered comparisons; update x86 backend to generate proper code for all floating-point comparisons  
							
							
							
						 
						
							2009-09-03 20:32:05 -05:00  
				
					
						
							
							
								 
						
							
							
								bf81cb4259 
								
							
								 
							
						 
						
							
							
								
								math.vectors.simd: split off intrinsics into a sub-vocabulary, to avoid loading most of the SIMD code on bootstrap  
							
							
							
						 
						
							2009-09-03 03:43:43 -05:00  
				
					
						
							
							
								 
						
							
							
								ae051e0c9a 
								
							
								 
							
						 
						
							
							
								
								compiler.tree.propagation: type function for clone had an issue, sometimes clone would get optimized out because of incorrect constant folding  
							
							
							
						 
						
							2009-09-03 02:40:18 -05:00  
				
					
						
							
							
								 
						
							
							
								ff8c70dbe0 
								
							
								 
							
						 
						
							
							
								
								Initial implementation of SSE vector intrinsics:  
							
							... 
							
							
							
							- cpu.architecture: add SSE vector representations
- compiler.cfg.intrinsics.alien: remove an attempt at optimization that value numbering handles now
- compiler.cfg.representations: support instructions where the representation is set in the 'rep' slot, and support conversions between single and double floats
- alien-float, set-alien-float now use the single float representation, and the conversion is implicit; this fixes a long-standing bug where a register could get clobbered because of how %set-alien-float was defined on x86
- math.vectors.specialization: add support for SIMD specialization (where the vector word's body is replaced by another quotation), also specialize the 'sum' word
- math.vectors.simd: 4float-array, 2double-array, 4double-array types, and specializers for the math.vectors words 
							
						 
						
							2009-09-03 02:33:07 -05:00  
				
					
						
							
							
								 
						
							
							
								85a2bfab6c 
								
							
								 
							
						 
						
							
							
								
								compiler: eliminate boilerplate by centralizing info in declarative INSN: syntax  
							
							
							
						 
						
							2009-09-02 06:22:37 -05:00  
				
					
						
							
							
								 
						
							
							
								f91b539c31 
								
							
								 
							
						 
						
							
							
								
								cpu.ppc: implement fast float function calls; 3x speedup on benchmark.struct-arrays on PowerPC  
							
							
							
						 
						
							2009-09-01 15:19:26 -05:00  
				
					
						
							
							
								 
						
							
							
								868009aaee 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.intrinsics: cleanup: the "intrinsic" word property is now a quotation, not a boolean, making this mechanism more extensible  
							
							
							
						 
						
							2009-08-30 22:20:49 -05:00  
				
					
						
							
							
								 
						
							
							
								bd629c1262 
								
							
								 
							
						 
						
							
							
								
								compiler/tests/codegen.factor: don't do exact float comparison  
							
							
							
						 
						
							2009-08-30 18:57:45 -05:00  
				
					
						
							
							
								 
						
							
							
								447c5fbf7a 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.live-intervals: dead-value-error is never thrown anymore  
							
							
							
						 
						
							2009-08-30 05:15:18 -05:00  
				
					
						
							
							
								 
						
							
							
								9595be4bf9 
								
							
								 
							
						 
						
							
							
								
								%box-displaced-alien: fix clobberage found by Doug  
							
							
							
						 
						
							2009-08-30 05:11:08 -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  
				
					
						
							
							
								 
						
							
							
								908b4742c5 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.value-numbering: fix ##box-displaced-alien simplification  
							
							
							
						 
						
							2009-08-28 19:05:49 -05:00  
				
					
						
							
							
								 
						
							
							
								2bb6293217 
								
							
								 
							
						 
						
							
							
								
								compiler: add fixnum-min/max intrinsics; ~10% speedup on benchmark.yuv-to-rgb  
							
							
							
						 
						
							2009-08-28 19:02:59 -05:00  
				
					
						
							
							
								 
						
							
							
								d957ae4e44 
								
							
								 
							
						 
						
							
							
								
								Performance improvements to make struct-arrays benchmark faster  
							
							... 
							
							
							
							- improved optimization of ##unbox-any-c-ptr on ##box-displaced-alien; convert it to ##unbox-c-ptr where possible using class info stored in the ##bda instruction
- make fcos, fsin, etc inline again; everything in math.libm inline again, except for fsqrt which is an intrinsic
- convert min and max on floats to float-min and float-max
- make min and max not inline, so that the above can work
- struct-arrays: rice a bit so that more fixnums come up 
							
						 
						
							2009-08-28 05:21:16 -05:00  
				
					
						
							
							
								 
						
							
							
								ba0f3a9911 
								
							
								 
							
						 
						
							
							
								
								compiler.tree.propagation.transforms: don't fail to compile if 'at' called on something that's not an assoc  
							
							
							
						 
						
							2009-08-27 18:57:56 -05:00  
				
					
						
							
							
								 
						
							
							
								8f19f14c1f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.instructions: forgot that ##box-displaced-alien needs a GC check; fixes segfault in benchmark.mandel  
							
							
							
						 
						
							2009-08-27 04:09:35 -05:00  
				
					
						
							
							
								 
						
							
							
								f662e6403a 
								
							
								 
							
						 
						
							
							
								
								compiler: new inline intrinsic for <displaced-alien> where the inputs have known types; value numbering now eliminates unnecessary allocation of displaced aliens if the result is immediately unboxed again  
							
							
							
						 
						
							2009-08-27 00:06:19 -05:00  
				
					
						
							
							
								 
						
							
							
								1b77718625 
								
							
								 
							
						 
						
							
							
								
								use structs  
							
							
							
						 
						
							2009-08-26 11:01:39 -05:00  
				
					
						
							
							
								 
						
							
							
								bbcf08cdc3 
								
							
								 
							
						 
						
							
							
								
								Merge branch 'master' of git://factorcode.org/git/factor  
							
							
							
						 
						
							2009-08-26 09:15:33 -05:00  
				
					
						
							
							
								 
						
							
							
								8bf709acd0 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix unit tests for new fake-representations  
							
							
							
						 
						
							2009-08-26 08:58:00 -05:00  
				
					
						
							
							
								 
						
							
							
								0ff80a063d 
								
							
								 
							
						 
						
							
							
								
								compiler: only run float test in low-level-ir if float intrinsics enabled; fixes SIGILL on non-sse2 x86 machines  
							
							
							
						 
						
							2009-08-26 06:58:47 -05:00  
				
					
						
							
							
								 
						
							
							
								8d55616d34 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.debugger: fix fake-representations so that low-level-ir tests can pass on x86  
							
							
							
						 
						
							2009-08-25 23:44:01 -05:00  
				
					
						
							
							
								 
						
							
							
								0df8aadce2 
								
							
								 
							
						 
						
							
							
								
								cpu.x86: use SQRTSD instruction for math.libm:fsqrt word  
							
							
							
						 
						
							2009-08-25 23:22:15 -05:00  
				
					
						
							
							
								 
						
							
							
								61c1ed17d9 
								
							
								 
							
						 
						
							
							
								
								basis/compiler/tests/low-level-ir: add ##copy double-float-rep test  
							
							
							
						 
						
							2009-08-25 19:41:17 -05:00  
				
					
						
							
							
								 
						
							
							
								0ce57d0566 
								
							
								 
							
						 
						
							
							
								
								update new structs again  
							
							
							
						 
						
							2009-08-25 16:31:58 -05:00  
				
					
						
							
							
								 
						
							
							
								2c6ef83c13 
								
							
								 
							
						 
						
							
							
								
								update compiler.tests.alien to joe's latest changes  
							
							
							
						 
						
							2009-08-25 12:00:06 -05:00  
				
					
						
							
							
								 
						
							
							
								b756a37d75 
								
							
								 
							
						 
						
							
							
								
								use new structs wherever possible in compiler tests  
							
							
							
						 
						
							2009-08-25 11:59:33 -04:00  
				
					
						
							
							
								 
						
							
							
								81b72cb5c5 
								
							
								 
							
						 
						
							
							
								
								Add some unit tests  
							
							
							
						 
						
							2009-08-22 17:15:10 -05:00  
				
					
						
							
							
								 
						
							
							
								1961b4da16 
								
							
								 
							
						 
						
							
							
								
								next-fastcall-param word was not being called; on x86 its equivalent to inc but on ppc there is more logic, this fixes FFI on PowerPC  
							
							
							
						 
						
							2009-08-21 20:15:19 -05:00  
				
					
						
							
							
								 
						
							
							
								5197aca215 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.dataflow-analysis: when intersecting sets, treat uninitialized sets as universal rather than empty; reduces number of stack instructions generated by 1%  
							
							
							
						 
						
							2009-08-20 18:15:41 -05:00  
				
					
						
							
							
								 
						
							
							
								49bd2228ec 
								
							
								 
							
						 
						
							
							
								
								compiler.tree.modular-arithmetic: fix regression; set-alien-*-1 was not always open-coded  
							
							
							
						 
						
							2009-08-20 17:56:49 -05:00  
				
					
						
							
							
								 
						
							
							
								9ef8f6c81d 
								
							
								 
							
						 
						
							
							
								
								compiler.tree.modular-arithmetic: eliminate >bignum calls where possible, convert fixnum-shift to fixnum-shift-fast if shift count is positive, don't run if there are no modular values  
							
							
							
						 
						
							2009-08-20 03:47:45 -05:00  
				
					
						
							
							
								 
						
							
							
								f01f7ad6eb 
								
							
								 
							
						 
						
							
							
								
								compiler.tree.propagation: bitand custom inlining was wrong if the second input was a bignum  
							
							
							
						 
						
							2009-08-20 03:47:07 -05:00  
				
					
						
							
							
								 
						
							
							
								fd2f0a602d 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.stacks.local: more accurate local replace set computation; optimizes out 'swap swap'  
							
							
							
						 
						
							2009-08-19 22:00:21 -05:00