Commit Graph

789 Commits (446ee6896db8452b8d0d2eb462c935d4c8af7296)

Author SHA1 Message Date
Slava Pestov 60ddbd9d9b compiler.cfg.scheduling: ##dispatch must go at the end since its a control flow transfer 2010-07-15 20:55:31 -04:00
Slava Pestov 0fd636b4b9 compiler.cfg: ##unbox-long-long can have multiple outputs now, clean up long long parameter passing code using this 2010-07-15 19:49:29 -04:00
Slava Pestov 48e96ef032 compiler.cfg.scheduling: update to support multiple-output instructions 2010-07-15 17:38:34 -04:00
Slava Pestov e27adb2830 compiler: re-architect low-level optimizer to allow more than one output value per instruction 2010-07-13 07:40:14 -04:00
Slava Pestov a55c8ee671 FFI rewrite part 6: deconcatenatize 2010-07-02 15:44:12 -04:00
Slava Pestov 7e24994db5 Whitespace fix 2010-06-23 03:56:17 -04:00
Slava Pestov 68cd067f31 compiler.cfg.builder: if there is a conditional where every branch is known to throw an error, don't process any of the (unreachable) code after the conditional, since this can confuse analysis (reported by Daniel Ehrenberg) 2010-06-23 03:33:15 -04:00
Slava Pestov 167aff1b57 compiler.cfg.height: clean it up a bit 2010-06-22 04:14:03 -04:00
Slava Pestov 5d6816d364 compiler.cfg.ssa: fixing test failures 2010-06-15 17:18:51 -04:00
Slava Pestov e86f434f26 Add GC maps to ##box, ##box-long-long, ##alien-invoke, ##alien-indirect and ##call-gc; remove ##gc-map instruction 2010-06-14 19:39:46 -04:00
Slava Pestov 806e54630a GC maps for more compact inline GC checks 2010-06-11 20:06:00 -04:00
Joe Groff 7fe04fa8ee compiler.cfg.intrinsics.simd: intrinsic support for double-2>float-4 conversion 2010-06-01 00:34:50 -07:00
Slava Pestov ba7cb61133 Stack allocation improvements
- New with-out-parameters combinator
- Inhibit tail call optimization in frames with local allocation, to ensure that passing a stack allocated value to the last word in the quotation works
- local allocations are now aligned properly
- spill slots are now aligned properly aligned in frames which have parameter and local allocation areas
2010-05-22 02:37:00 -04:00
Slava Pestov 9e59192c73 compiler.cfg.builder.alien: use ##local-allot to fix value struct passing on Win64 2010-05-19 01:53:32 -04:00
Slava Pestov 91cd3b854d Use ##local-allot to simplify longlong unboxing 2010-05-19 01:07:22 -04:00
Slava Pestov 86358b1dc3 alien.data: add with-scoped-allocation combinator for stack-allocating C data 2010-05-19 00:33:36 -04:00
Slava Pestov 77516c6932 compiler.cfg: generalize ##prepare-struct-caller instruction to alloca()-like ##local-allot 2010-05-19 00:33:15 -04:00
Slava Pestov ea726f5680 Move remaining sequence operations from generalizations to sequences.generalizations where they belong 2010-05-18 18:36:47 -04:00
Slava Pestov be733cd797 compiler.cfg.value-numbering: constant folding for ##shuffle-vector 2010-05-18 04:22:21 -04:00
Slava Pestov 53a51957df compiler.cfg.value-numbering: add constant folding for ##gather-vector instructions, and fix ##scalar>vector constant folding for integers 2010-05-18 03:56:07 -04:00
Slava Pestov 6eaf2d7534 cpu.x86: add x87 codegen for Model T enthusiasts 2010-05-17 11:35:47 -04:00
Slava Pestov 41d929a201 compiler.cfg.ssa.interference: implement linear-time interference test 2010-05-17 05:50:13 -04:00
Slava Pestov 6b7260a4a7 compiler.cfg.ssa.interference.live-ranges: compute correct live ranges for ##phi instructions 2010-05-17 05:50:13 -04:00
Slava Pestov 0955f2c7eb compiler.cfg.linear-scan: fix typo 2010-05-17 05:50:13 -04:00
Slava Pestov 7ff309d50e cpu.x86: get rid of this extra-stack-space nonsense 2010-05-17 02:14:44 -04:00
Slava Pestov 3f8e13bf66 compiler.cfg: refactor stack frame code and fix frame pointer usage in callbacks 2010-05-16 21:04:40 -04:00
Slava Pestov a7b5957f6d compiler: hack to make XCreateIC() work on x86-64 2010-05-16 04:49:53 -04:00
Slava Pestov 8ebecac4d2 Merge branch 'master' of git://factorcode.org/git/factor 2010-05-16 04:10:03 -04:00
Slava Pestov e6abc0be15 Fixes for FFI changes 2010-05-16 04:09:47 -04:00
Joe Groff 67ea40ade3 compiler.cfg.intrinsics.simd: use ^^select-vector for simd constant nth when available 2010-05-16 00:50:20 -07:00
Joe Groff 645164188d compiler.cfg.instructions: ##select-vector instruction mapping to SSE4 PEXTR* 2010-05-16 00:50:19 -07:00
Slava Pestov 5b48cd2a63 FFI rewrite part 5: return value boxing and callback parameter boxing now uses vregs; simplify return value unboxing 2010-05-16 03:43:23 -04:00
Joe Groff 0c27f30475 compiler.cfg.intrinsics.simd: use new ##gather-int-vector insns to construct int vectors when available 2010-05-15 23:59:27 -07:00
Joe Groff 8c878ada17 compiler.cfg.instructions: ##gather-int-vector-2/4 instructions that map to SSE4 PINSR/PEXTR 2010-05-15 23:48:22 -07:00
Joe Groff 5d35917061 compiler.cfg.intrinsics: intrinsic for fixnum-bit-count 2010-05-15 13:59:47 -07:00
Joe Groff 7fec53b509 compiler.cfg.instructions: ##bit-count insn 2010-05-15 13:57:35 -07:00
Slava Pestov 5c0c87fcaa compiler.cfg.value-numbering.comparisons: ##test-imm rewrite rule must check that the immediate fits 2010-05-15 03:19:24 -04:00
Slava Pestov 5ecd2b61c7 compiler.cfg: more silly optimizations 2010-05-14 18:37:09 -04:00
Slava Pestov 1a61c50896 compiler.cfg.instructions: change vreg-insn from a mixin into a superclass 2010-05-14 18:37:09 -04:00
Slava Pestov 6d30bb8bf4 compiler.cfg.linear-scan: pointless optimizations 2010-05-14 18:37:08 -04:00
Slava Pestov 291543c300 compiler.cfg.ssa.live-ranges: clean up 2010-05-14 18:37:08 -04:00
Slava Pestov d1e422c981 compiler.cfg.alias-analysis: simplify and speed up 2010-05-14 18:37:07 -04:00
Slava Pestov 5a67711bfd compiler.cfg: use x86 TEST instruction to optimize 'bitand 0 =' 2010-05-14 18:37:06 -04:00
Joe Groff 465a1673eb compiler.cfg.intrinsics.simd: mod shuffle indices for shuffle-2-vectors-imm intrinsic so they wrap like a real instruction would 2010-05-14 01:20:05 -07:00
Joe Groff 9f9e145819 math.vectors.simd.intrinsics: (simd-vshuffle2-elements) intrinsic that creates a vector by selecting elements from two input vectors. use ##shuffle-vector-halves-imm to implement for double-2s with SSE 2010-05-14 01:16:29 -07:00
Joe Groff 3766abd65e compiler.cfg.instructions: ##shuffle-vector-halves-imm insn to map to SSE's two-input SHUFPS/SHUFPD 2010-05-14 00:20:21 -07:00
Slava Pestov bb87d124c1 compiler: small fixes and cleanups 2010-05-13 02:48:20 -04:00
Slava Pestov db2db6a1a6 compiler.cfg.builder.alien: fix for x86-32 2010-05-12 18:07:11 -04:00
Slava Pestov 42b0d456cd Refactor x86-32 stack cleanup logic 2010-05-12 02:09:11 -04:00
Slava Pestov f89b85db7b Temporary fixes for x86-32 until FFI boxing is rewritten 2010-05-12 01:41:49 -04:00