Commit Graph

60 Commits (7f0469efef232e42efbaaaadde511528bf2e4b9f)

Author SHA1 Message Date
Slava Pestov 7f0469efef compiler: new "binary literal area" at the end of a word's machine code stores constant floats and SIMD vectors; this allows ##load-reference/##load-memory fusion to be performed on x86-64, with a RIP-relative address reaching the data; also simplifies VM since custom relocation types used by the previous 32-bit-only optimization are no longer needed 2010-05-03 17:34:35 -04:00
Slava Pestov bc3826f73a compiler.cfg.value-numbering: fix unit test for 64-bit 2010-05-03 17:34:33 -04:00
Slava Pestov bb0579ecf9 Updating tests for recent compiler changes 2010-05-03 17:34:30 -04:00
Slava Pestov d8fc595383 compiler.cfg: clean up ##phi literals in tests 2010-05-03 17:34:24 -04:00
Slava Pestov 8af111577c compiler.cfg.representations: fix various bugs 2010-05-03 17:34:11 -04:00
Slava Pestov 2b50b9b315 compiler.cfg.value-numbering: merge 'simplify' pass into 'rewrite' 2010-05-03 17:34:08 -04:00
Slava Pestov 80c8a7154d compiler.cfg: add ##load-memory and ##store-memory instructions implementing complex addressing modes, and associated value numbering optimizations 2010-05-03 17:34:07 -04:00
Slava Pestov 505b34a611 compiler.cfg.value-numbering: add slot addressing rewrite rule to eliminate a redundant ##add-imm from array-nth and set-array-nth 2010-05-03 17:34:07 -04:00
Slava Pestov becd957d29 compiler.cfg: merge all alien accessors into ##load-memory-imm and ##store-memory-imm 2010-05-03 17:34:06 -04:00
Slava Pestov 12907654d5 compiler.cfg.value-numbering: fix compile error 2010-05-03 17:34:04 -04:00
Slava Pestov 6403572286 compiler.cfg.value-numbering: new optimizations; reassociation for shifts and redistribution for shifts/multiplies over additions/subtractions 2010-05-03 17:34:02 -04:00
Slava Pestov 80558a93fa Debugging untagged fixnums 2010-05-03 17:34:02 -04:00
Slava Pestov 6fdcd9fb02 Untagged fixnums work in progress 2010-05-03 17:34:02 -04:00
Slava Pestov dbd7489894 compiler.cfg: fix some bugs introduced by the ##compare-imm fusion patch 2010-04-18 21:42:45 -05:00
Slava Pestov c4cf2a4085 compiler: change how 'f' is represented in low level IR to simplify some code, and fuse a ##load-constant of a word with a ##compare into a ##compare-imm on x86-32. This eliminates a spill from binary-search 2010-04-18 21:42:45 -05:00
Joe Groff db1ae26801 sever lingering dependencies on simd from compiler 2009-11-11 16:08:40 -06:00
Slava Pestov d0a784d61c compiler: update unit tests for 4-bit tag change 2009-11-03 21:40:29 -06:00
Joe Groff 218d5c7c07 value numbering rewrite rules for vector ops to convert "not and" to "andn" and "not andn" to "and" 2009-10-20 17:29:01 -05:00
Joe Groff 5158a12d32 rename ##shuffle-vector to ##shuffle-vector-imm, and add a new ##shuffle-vector for dynamic shuffles. have vshuffle use ##shuffle-vector to do word and byte shuffles on x86 2009-10-09 21:26:27 -05:00
Daniel Ehrenberg ab919bab96 Doing constant folding on ##neg and ##not in value numbering 2009-10-08 01:57:54 -05:00
Joe Groff 2d79729193 fix ##load-constant/##scalar>vector folding when constant is a fixnum 2009-10-07 12:46:08 -05:00
Slava Pestov d47e99dbde Fix compiler.cfg.value-numbering and math.matrices.simd unit tests 2009-10-02 02:32:35 -05:00
Joe Groff 9d424a1092 Merge branch 'master' of git://factorcode.org/git/factor
Conflicts:
	basis/compiler/codegen/codegen.factor
2009-10-01 23:14:16 -05:00
Joe Groff 7b13fa4283 fold test-vector/branch sequences into a test-vector-branch instruction 2009-10-01 19:53:30 -05:00
Slava Pestov 785b9f2d43 compiler.cfg.value-numbering: fix overly-zealous ##compare-imm conversion 2009-09-30 05:09:20 -05:00
Slava Pestov 8e201ca4b7 Various minor compiler tweaks: Combine address calculation with dereferencing in alien accessors; convert SIMD XOR of a vector with itself into an XOR of the destination with itself; convert SIMD unbox of zero vector into XOR of the destination with itself; fix SIMD indexing on x86-64 2009-09-30 05:00:36 -05:00
Slava Pestov ba3a06b745 compiler.cfg.value-numbering: add some more rewrite rules, neg/neg, not/not, and a few for SIMD 2009-09-30 02:18:29 -05:00
Joe Groff 025a5b7b15 split unordered and ordered float comparison intrinsics in compiler; generate only unordered comparisons for now 2009-09-08 17:04:26 -05:00
Slava Pestov e20e9008ea compiler.cfg.value-numbering: update tests for Joe's condition code changes 2009-09-04 03:11:56 -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 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
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 8028eb5776 compiler.cfg: clean up unit tests using some new utilities 2009-08-02 03:49:25 -05:00
Slava Pestov ac7447483d compiler.cfg.ssa.destruction: rename coalesce word to destruct-ssa 2009-07-28 12:56:33 -05:00
Slava Pestov 7a158d84da compiler.cfg: Rename ssa to ssa.construction, coalescing to ssa.destruction 2009-07-28 09:34:08 -05:00
Slava Pestov 905f52d4a9 compiler.cfg: Fix some unit tests 2009-07-28 08:56:14 -05:00
Slava Pestov d8836f8927 compiler.cfg: Fixing test failures 2009-07-24 06:08:07 -05:00
Slava Pestov 5d9f7b0ed2 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
Slava Pestov 2e07fcdd6d compiler.cfg: Fix unit tests 2009-07-21 22:25:19 -05:00
Daniel Ehrenberg 9ae962ded6 Phi elimination doesn't have the swap problem now 2009-07-16 22:42:13 -05:00
Slava Pestov bff5a44c70 compiler.cfg: Fix regressions from recent changes 2009-07-14 20:43:06 -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 bea69ea325 compiler.cfg.value-numbering: branch folding 2009-07-14 19:17:12 -05:00
Slava Pestov 2e6ae2153c compiler.cfg.value-numbering: more optimizations 2009-07-14 16:05:25 -05:00
Slava Pestov 1e8e24946c compiler.cfg.value-numbering: add some unit tests 2009-07-14 13:25:07 -05:00
Slava Pestov a17293a828 compiler.cfg: update unit tests for compiler.cfg.comparisons 2009-07-14 12:06:55 -05:00
Slava Pestov 40949800bf Fixing various bugs; alias analysis wasn't handling ##phi nodes, stack analysis incorrectly handled height-changing back edges and ##fixnum-*, clean up ##dispatch generation 2009-05-29 01:39:14 -05:00
Slava Pestov 64da54234d Fixing local optimizations 2009-05-27 18:58:41 -05:00