Slava Pestov
f6a836d1e9
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
Slava Pestov
f30aa5d20e
compiler: add fixnum-min/max intrinsics; ~10% speedup on benchmark.yuv-to-rgb
2009-08-28 19:02:59 -05:00
Slava Pestov
99bf9fadfb
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
Slava Pestov
c9cba1cc00
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
Slava Pestov
9caf3f9248
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
Doug Coleman
546367b88a
use structs
2009-08-26 11:01:39 -05:00
Doug Coleman
be57edbff2
Merge branch 'master' of git://factorcode.org/git/factor
2009-08-26 09:15:33 -05:00
Slava Pestov
02ec791ab7
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
sheeple
2f789f735d
basis/compiler/tests/low-level-ir: add ##copy double-float-rep test
2009-08-25 19:41:17 -05:00
Doug Coleman
96120dc8e5
update new structs again
2009-08-25 16:31:58 -05:00
Doug Coleman
3fa6500cd2
update compiler.tests.alien to joe's latest changes
2009-08-25 12:00:06 -05:00
Doug Coleman
3d05dd1abf
use new structs wherever possible in compiler tests
2009-08-25 11:59:33 -04:00
Slava Pestov
0bfbcd2108
compiler.tree.modular-arithmetic: fix regression; set-alien-*-1 was not always open-coded
2009-08-20 17:56:49 -05:00
Slava Pestov
552d069e9f
compiler: add unit tests for new bugs
2009-08-19 16:56:26 -05:00
Slava Pestov
771488d87b
Fix some unit test failures
2009-08-18 03:49:05 -05:00
Doug Coleman
7c3824639e
move if-zero etc to math, remove 1-/1+ from math
2009-08-14 14:27:23 -05:00
Doug Coleman
d1ce837569
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
Slava Pestov
88f28a7245
math.intervals: fix interval-rem
2009-08-11 16:49:28 -05:00
Slava Pestov
88d15dfbea
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
Slava Pestov
2d575d7ec9
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
Slava Pestov
4d2160799f
Split off the notion of a register representation from a register class
2009-08-07 17:44:50 -05:00
Slava Pestov
cffd809ca0
compiler.cfg.stacks: more accurate deconcatenatization inserts fewer partially redundant ##peeks. 11% improvement on benchmark.beust2, 2% reduction in ##peek and ##replace instructions inserted
2009-08-03 07:08:28 -05:00
Slava Pestov
3a9e164275
compiler tests: add test case for coalescing bug
2009-08-02 03:49:54 -05:00
Slava Pestov
8028eb5776
compiler.cfg: clean up unit tests using some new utilities
2009-08-02 03:49:25 -05:00
Slava Pestov
bb1c904261
compiler.cfg.ssa.destruction: fix bug in trivial-interference heuristic, and type error in code path that didn't run before
2009-08-01 20:22:31 -05:00
Slava Pestov
14d8cc4e5e
compiler: Oops, typos in unit tests
2009-07-31 22:33:02 -05:00
Slava Pestov
a5c4877bf6
compiler.cfg.ssa.destruction: fix bug in renaming triggered by sequence-parser:take-sequence
2009-07-31 18:34:15 -05:00
Slava Pestov
f260500bcd
compiler: fix test
2009-07-29 06:39:54 -05:00
Slava Pestov
2a87faf681
IN: fix for compiler test
2009-07-28 11:16:21 -05:00
Slava Pestov
8ac396d9e0
Add some compiler tests
2009-07-28 06:45:31 -05:00
Slava Pestov
164e5c4eb5
Add some tests that directly generate low level IR
2009-07-27 22:29:33 -05:00
Slava Pestov
377233bd90
Add testcase for recent bug
2009-07-23 18:03:14 -05:00
Slava Pestov
1651deaaa7
Fixing compiler tests
2009-07-22 21:10:50 -05:00
Slava Pestov
39a70db831
Improve code generation for shift word: add intrinsics for fixnum-shift-fast in the case where the shift count is not constant, transform 1 swap shift into a more overflow check with open-coded fast case, transform bitand into fixnum-bitand in more cases
2009-07-16 23:50:48 -05:00
Slava Pestov
b65ef327ce
compiler.cfg.value-numbering: merge in compiler.cfg.branch-folding
2009-07-14 20:05:01 -05:00
Slava Pestov
a41f452f68
Fix codegen test
2009-07-14 16:11:14 -05:00
Slava Pestov
2e6ae2153c
compiler.cfg.value-numbering: more optimizations
2009-07-14 16:05:25 -05:00
Slava Pestov
577a3cb968
compiler.cfg.value-numbering.rewrite: fix ##compare-imm rewrite rule
2009-07-04 02:50:50 -05:00
Slava Pestov
086ebcdda4
half-floats: Add some more unit tests
2009-07-02 17:52:53 -05:00
Slava Pestov
941d7a1eeb
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
Slava Pestov
fd710385e5
cpu.x86: fix small register intrinsics on x86-64
2009-06-03 03:22:46 -05:00
Slava Pestov
ba04d5af1e
Update documentation for stricter vocabulary search path semantics
2009-05-16 00:29:21 -05:00
Slava Pestov
302d829ea9
Fix compiler breakage if a GENERIC# has an incorrect stack effect declaration
2009-05-12 21:23:52 -05:00
Slava Pestov
70deacb900
Fix unit tests and load errors for slip removal
2009-05-10 17:03:41 -05:00
Slava Pestov
e55f0d17e5
compiler.tree.modular-arithmetic: convert >integer >fixnum into >fixnum
2009-05-07 12:54:23 -05:00
Slava Pestov
c5d3bbd5b6
Fix bool type; its actually 1 byte not 4 in structs. Bug reported by jedahu
2009-05-05 18:37:40 -05:00
Slava Pestov
4d438a3edd
Remove cruddy string encoding/decoding code from VM
2009-05-02 13:45:38 -05:00
Slava Pestov
7495ad96cb
Fix typo in redefine14 test
2009-05-01 08:29:04 -05:00
Slava Pestov
a25577d6df
Some new compiler tests
2009-05-01 06:48:33 -05:00
Slava Pestov
23b5888da6
Fix some test failures and add an unportable tag
2009-04-30 22:56:15 -05:00