John Benediktsson
|
068ddd6c7b
|
compiler: cleanup cfg passes to have stack effect ( cfg -- )
|
2014-12-11 12:48:43 -08:00 |
Björn Lindqvist
|
c85175c10c
|
compiler.cfg.*: new utility word apply-passes to improve the looks of long cleave's where each quotation only contains one word
|
2014-12-11 14:30:47 +01:00 |
Björn Lindqvist
|
e5866dfa80
|
compiler.cfg.*: changed stack effect of needs-predecessors from ( cfg -- cfg') to ( cfg -- )
|
2014-12-11 14:30:47 +01:00 |
Björn Lindqvist
|
96396cb3ad
|
compiler.*: use block>cfg and insns>block in many tests instead of wordier code
|
2014-11-22 17:31:38 -08:00 |
John Benediktsson
|
b6c069f99a
|
compiler.cfg.representations.selection: removing 10^ in favor of 10^.
|
2012-09-05 09:25:26 -07:00 |
John Benediktsson
|
6a183718fa
|
compiler.cfg: don't need to escape the symbol here.
|
2012-08-02 15:14:42 -07:00 |
Joe Groff
|
873208f986
|
compiler: more peephole tests for shl/sar
|
2011-11-13 16:10:24 -08:00 |
Doug Coleman
|
6cca0ea468
|
compiler.cfg: Rename <##foo> to ##foo, in the low-level IR
|
2011-11-11 19:48:38 -08:00 |
Doug Coleman
|
eb2a0c611b
|
compiler.cfg: Change low-level IR constructors from ##foo to <##foo>
|
2011-11-06 23:02:46 -08:00 |
John Benediktsson
|
378786599d
|
Cleanup lint warnings.
|
2011-10-14 11:47:24 -07:00 |
Slava Pestov
|
dc36fd712d
|
compiler.cfg.representations: fix unit test, it depended on hashing order which changed recently
|
2011-10-10 12:15:41 -07:00 |
Joe Groff
|
2bd6de9a02
|
slots: pre-create the "at", "nth", and "global" slots to make deterministic the currently nondeterministic ambiguity between accessors:change-* and assocs:change-at, sequences:change-nth, and namespaces:change-global
|
2011-09-19 10:03:43 -07:00 |
Slava Pestov
|
355d89e8e8
|
compiler.cfg: now that kill-blocks cannot contain instructions that define vregs we can skip them all
|
2010-07-27 12:40:31 -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
|
ea726f5680
|
Move remaining sequence operations from generalizations to sequences.generalizations where they belong
|
2010-05-18 18:36:47 -04:00 |
Slava Pestov
|
5ecd2b61c7
|
compiler.cfg: more silly optimizations
|
2010-05-14 18:37:09 -04:00 |
Slava Pestov
|
5a67711bfd
|
compiler.cfg: use x86 TEST instruction to optimize 'bitand 0 ='
|
2010-05-14 18:37:06 -04:00 |
Slava Pestov
|
c211c3e84e
|
FFI rewrite part 1: split up ##alien-invoke and friends into smaller instructions
|
2010-05-09 21:36:52 -04:00 |
Slava Pestov
|
f988dad79c
|
compiler.cfg: add ##load-float instruction for single precision floating point constants
|
2010-05-07 18:26:00 -04:00 |
Slava Pestov
|
58e4381eb1
|
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
|
9b4135713e
|
compiler.cfg.representations: make sure that immediate operands fit
|
2010-05-03 17:34:34 -04:00 |
Slava Pestov
|
9788323d25
|
compiler: add ##load-vector instruction to avoid wasting a temporary register on x86-32
|
2010-05-03 17:34:28 -04:00 |
Slava Pestov
|
df86d1341f
|
compiler.cfg: clean up ##phi literals in tests
|
2010-05-03 17:34:24 -04:00 |
Slava Pestov
|
9b34a4a054
|
compiler.cfg: remove unused 'reps' slot from compiler.cfg, and re-organize things in preparation for SSA register allocation
|
2010-05-03 17:34:18 -04:00 |
Slava Pestov
|
d23bb19b55
|
Code cleanups
|
2010-05-03 17:34:17 -04:00 |
Slava Pestov
|
458fd007be
|
compiler.cfg.representations: simplify a little
|
2010-05-03 17:34:11 -04:00 |
Slava Pestov
|
ed8c32989f
|
compiler.cfg.representations: add peephole optimizations for integer comparisons
|
2010-05-03 17:34:11 -04:00 |
Slava Pestov
|
0f5d9974a0
|
compiler.cfg.representations: fix various bugs
|
2010-05-03 17:34:11 -04:00 |
Slava Pestov
|
456743a6ce
|
compiler.cfg.representations: add more peephole optimizations to reduce fixnum tagging and untagging overhead
|
2010-05-03 17:34:11 -04:00 |
Slava Pestov
|
913b95192e
|
compiler.cfg: merge all alien accessors into ##load-memory-imm and ##store-memory-imm
|
2010-05-03 17:34:06 -04:00 |
Slava Pestov
|
e95cd256ec
|
compiler.cfg.representations: peephole optimizations are used to simplify the case where the input to a ##shl-imm or ##sar-imm needs to be untagged
|
2010-05-03 17:34:03 -04:00 |
Slava Pestov
|
5d3a7a7362
|
Untagged fixnums work in progress
|
2010-05-03 17:34:02 -04:00 |
Slava Pestov
|
503c0fcfde
|
compiler: Start using tagged-rep for stuff, and split up compiler.cfg.representations into several sub-vocabularies
|
2010-05-03 17:34:01 -04:00 |
Slava Pestov
|
2517b2fc2b
|
compiler: combine ##load-constant followed by ##alien-double into a ##load-double on x86-32, saving an integer register
|
2010-04-18 21:42:45 -05:00 |
Daniel Ehrenberg
|
512fe14e4e
|
Merge branch 'bags' of git://github.com/littledan/Factor
Conflicts:
basis/compiler/cfg/ssa/construction/tdmsc/tdmsc.factor
basis/furnace/auth/auth.factor
basis/stack-checker/backend/backend.factor
|
2010-03-16 13:28:00 -04:00 |
Joe Groff
|
191ac353fd
|
generalize stack effects so we can bootstrap with the stricter stack effect checking
|
2010-03-08 23:38:10 -08:00 |
Daniel Ehrenberg
|
7074979745
|
Moving new-sets to sets
|
2010-02-26 16:01:01 -05:00 |
Slava Pestov
|
495f776d54
|
Merge branch 'master' into new_gc
|
2009-11-02 20:11:43 -06:00 |
Slava Pestov
|
8bd2273e44
|
compiler.cfg: don't generate useless methods in instruction meta-programming. reduces bootstrap time
|
2009-11-02 20:11:29 -06:00 |
Slava Pestov
|
e4ad642134
|
vm: 4 bit tags, new representation of alien objects makes unbox-any-c-ptr more efficient (work in progress)
|
2009-11-02 04:25:54 -06:00 |
Doug Coleman
|
bd13e018dd
|
memq? -> member-eq?, sorted-memq? -> sorted-member-eq?
|
2009-10-28 15:02:00 -05:00 |
Doug Coleman
|
1476cdb974
|
reverse-here -> reverse!
|
2009-10-28 14:40:15 -05:00 |
Joe Groff
|
fd6f370119
|
typo in convert-to-fill-vector?
|
2009-10-07 12:53:10 -05:00 |
Joe Groff
|
ea051063a4
|
convert all-ones vector ##load-reference/##load-constant to a ##fill-vector insn
|
2009-10-07 12:35:21 -05:00 |
Slava Pestov
|
c3d81cefe9
|
compiler.cfg: don't unbox the same value more than once per basic block
|
2009-10-01 19:41:23 -05:00 |
Slava Pestov
|
b9577e2b0e
|
compiler.cfg.instructions: remove ##box-float, ##unbox-float, ##box-vector, ##unbox-vector since they can be expressed in terms of ##alien-double, ##set-alien-double, ##alien-vector, ##set-alien-vector, and ##allot
|
2009-10-01 18:07:50 -05:00 |
Slava Pestov
|
cdc7b7e2c7
|
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
|
1da18d06b1
|
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 |
Slava Pestov
|
7b6128dd03
|
math.vectors.simd: add v<< and v>> intrinsics for bitwise shifts on elements
|
2009-09-24 03:32:39 -05:00 |
Slava Pestov
|
4a2823b2eb
|
compiler: tweak generated code
|
2009-09-04 03:01:18 -05:00 |