John Benediktsson
972281987c
compiler.cfg.intrinsics: intrinsics on inline words are not supported.
2013-03-20 10:59:45 -07:00
John Benediktsson
b8097f9221
compiler: cleaner use of sets.
2013-03-10 17:21:27 -07:00
John Benediktsson
ac95c024f3
compiler.cfg.loop-detection: more use of hash-sets.
2013-03-10 10:06:48 -07:00
John Benediktsson
c7c951f207
compiler.cfg.ssa.construction: more use of hash-sets.
2013-03-10 10:03:11 -07:00
John Benediktsson
262a46a3f4
compiler.cfg.loop-detection: more use of hash-sets.
2013-03-08 12:38:50 -08:00
John Benediktsson
9d43e21563
compiler.cfg.write-barrier: more use of hash-sets.
2013-03-08 12:30:37 -08:00
John Benediktsson
88626d38ca
compiler.cfg.ssa.construction: more use of hash-sets.
2013-03-08 12:24:06 -08:00
John Benediktsson
b97a1a0753
compiler: fix stack effects to indicate visited is same object.
2013-03-08 12:16:02 -08:00
John Benediktsson
bf35114fec
compiler: use hash-sets to track visited sets.
2013-03-08 11:04:47 -08:00
John Benediktsson
5908186301
compiler.cfg.alias-analysis: use clear-set.
2013-03-07 21:35:00 -08:00
Doug Coleman
63e55ac813
compiler.cfg.liveness: Break the infinite loop--add the base-pointer as f to start with, and replace it with the real one if there's not a circular chain. Fixes #22 again.
2013-01-01 14:47:54 -08:00
Doug Coleman
125e4befd3
compiler.cfg.liveness: Add parallel-copy method for lookup-base-pointer*. Adjust lookup-base-pointer* stack effect to take two parameters. Still retain stack overflows, but more correct now...
2013-01-01 14:16:51 -08:00
Alex Vondrak
8b44af4717
compiler.cfg.renaming.functor: fix ##parallel-copy methods
2012-12-31 11:26:46 -08:00
Alex Vondrak
e90ce0865c
compiler.cfg.ssa.destruction.leaders: break off leader-map to resolve circular dependencies (oops)
2012-12-31 11:20:57 -08:00
Alex Vondrak
dcb27c51e4
compiler.cfg.liveness: still kill defs by leaders, but keep original
...
vregs in the live-sets so accurate info (e.g., representations) can
still be looked up (issue #22 )
2012-12-31 11:05:05 -08:00
Alex Vondrak
fc91dcf530
compiler.cfg.ssa.destruction: alien-call-insns are too hairy to coalesce (issue #22 )
2012-12-31 11:04:57 -08:00
Alex Vondrak
86a15ad47b
compiler.cfg.liveness: look up leaders (if possible) so liveness analysis doesn't break after leaving SSA (issue #22 )
2012-12-31 11:04:52 -08:00
Alex Vondrak
b08c077023
compiler.cfg.parallel-copy: make sure new vregs used to break cycles in parallel-copy-rep update the leader-map (issue #22 )
2012-12-31 11:04:44 -08:00
Alex Vondrak
ff1c2c293b
compiler.cfg.ssa.interference.live-ranges: fix kill-indices for ##parallel-copy (issue #22 )
2012-12-31 11:04:38 -08:00
Alex Vondrak
ae0b77a0c4
compiler.cfg.ssa.cssa: split the definitions of ##phis so live-ranges don't interfere (issue #22 )
...
See the explanation after the proof of Lemma 1 in "Revisiting Out-of-SSA
Translation for Correctness, Code Quality, and Efficiency" (Boissinot et
al.) for why this is necessary.
2012-12-31 11:04:26 -08:00
Doug Coleman
a0dd953e33
starting point - Fix bootstrap; I broke it in merging. Disable environment variables because the compiler isn't loaded yet and can't call C ffi functions, and tools.test loads this vocab.
...
Disable intrinsics in cpu.x86.64 for now, since they invoke the compiler
Fix ##branch renaming to ##branch,
To work on this branch:
./factor -include=math -i=boot.image
./factor -run=listener
USE: compiler USE: tools.test save
enable-optimizer
Error message is now:
T{ vregs-shouldn't-interfere f 409 424 }
2012-12-31 11:03:45 -08:00
Slava Pestov
07227f22f9
WIP
2012-12-31 11:03:33 -08:00
John Benediktsson
013160df9a
change some "2drop 2drop" to "4drop".
2012-10-23 12:21:30 -07:00
Alex Vondrak
f75f99ecc9
compiler.cfg.copy-prop: kludge to make sure ##phis get updated
2012-09-12 15:14:11 -07:00
Alex Vondrak
4008edfdf8
move compiler.cfg.graphviz & compiler.cfg.gvn from basis to extra, just to keep organized
2012-09-12 15:14:07 -07:00
Alex Vondrak
51b3b1fd87
compiler.cfg.graphviz: tweak code & output a little
2012-09-12 15:14:06 -07:00
Alex Vondrak
d6849da7ec
compiler.cfg.graphviz: refactoring
2012-09-12 15:14:06 -07:00
Alex Vondrak
64b541759e
add crappy experimental code for compiler.cfg.graphviz & compiler.cfg.gvn
2012-09-12 15:14:06 -07: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
John Benediktsson
4e72d80256
Using "same?" in more places.
2012-07-21 10:22:44 -07:00
John Benediktsson
559b5bfa5b
using the new H{ } make.
2012-07-19 09:50:09 -07:00
Doug Coleman
42f4dc36b2
namespaces: Rename ``bind`` to ``with-variables``. Update a few places that called ``global [ ] with-variables`` to use ``with-global``.
2012-07-19 00:02:47 -07:00
Doug Coleman
7c77597b09
issue #358 : fix a couple compiler errors
2012-06-21 08:35:47 -07:00
Doug Coleman
80385770ef
compiler: The non-optimizing compiler is too slow with smart combinators in the compiler. Speed up bootstrap by not using them.
2011-12-05 14:50:51 -08:00
Joe Groff
943596575a
use radix literals
2011-11-23 19:03:40 -08:00
Joe Groff
f225bf7f55
compiler.cfg.finalization: reenable scheduling
...
Prolog safepoint appears to work with it enabled
2011-11-23 11:11:27 -08:00
Joe Groff
6498bc65ce
compiler: emit safepoints in optimized prologs
2011-11-23 11:11:25 -08:00
Joe Groff
248066c710
code beautification
2011-11-13 16:10:26 -08:00
Joe Groff
873208f986
compiler: more peephole tests for shl/sar
2011-11-13 16:10:24 -08:00
Joe Groff
d79b462f75
compiler: add intrinsic for PMOVMSKB/MOVMSKP[SD]
...
Combined with a fast bit-count this will let us rice byte-counting.
2011-11-13 16:10:20 -08:00
Slava Pestov
910748819d
Now that #foo and ##foo are symbols we can remove a bunch of \
2011-11-12 22:04:26 -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
Doug Coleman
c731dc6edb
Rename lookup to lookup-word.
2011-11-06 16:00:00 -08:00
Slava Pestov
70056d756b
compiler.cfg.builder: add test to ensure that fast union predicates do not contain a conditional
2011-10-29 17:11:04 -07:00
Joe Groff
c06be95816
compiler: no spurious safepoint at start of loops
2011-10-27 21:14:48 -07:00
Joe Groff
41c36752fc
compiler.cfg.tco: clean up commented-out old code
2011-10-27 21:14:47 -07:00
Joe Groff
6f75e84d93
compiler.cfg.tco: teach TCO about safepoints
2011-10-27 21:14:46 -07:00
Joe Groff
e449fef4e3
compiler.cfg.builder: safepoint loops and epilogs
2011-10-27 21:14:46 -07:00
Joe Groff
0c022f2454
compiler: add ##safepoint IR insn
2011-10-27 21:14:46 -07:00
Doug Coleman
51c033a1f6
Fix all failures in the linux64 build email
2011-10-24 19:33:09 -07:00
Doug Coleman
f9257959fd
Rename class to class-of
2011-10-24 06:47:42 -05:00
John Benediktsson
f4a6e10818
More cleanup of unused stuff.
2011-10-19 11:01:16 -07:00
John Benediktsson
378786599d
Cleanup lint warnings.
2011-10-14 11:47:24 -07:00
John Benediktsson
1987deb359
Fix M: stack effects.
2011-10-13 16:41:17 -07:00
John Benediktsson
4baf14972f
sequences: adding ?last for symmetry.
2011-10-13 13:04: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
Slava Pestov
06218d5d12
compiler.cfg.builder.alien: fix compilation of callbacks which unconditionally throw errors
2011-10-02 19:52:12 -07:00
Doug Coleman
671f19d70f
Remove all non-core uses of (scan-token)
...
Add scan-datum
Add scan-number
Document more words
Fixes #225 .
2011-10-02 12:00:08 -07:00
Doug Coleman
76580da5d5
Refactor the lexer/parser to expose friendlier words for scanning tokens. The preferred top-level words now throw an exception on EOF.
...
CREATE -> scan-new
CREATE-CLASS -> scan-new-class
CREATE-WORD -> scan-new-word
CREATE-GENERIC -> scan-new-generic
scan -> (scan-token)
scan-token now throws on eof
(scan-word) returns word/number/f
scan-word now throws on eof
scan-word-name expects a non-number
Fixes #183 .
Fixes #209 .
2011-09-29 11:28:28 -07:00
Doug Coleman
3826febfae
Fixes the symptom but not the problem. See bug #201 .
2011-09-26 17:32:34 -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
Joe Groff
d6668caf7d
compiler.cfg.builder.alien: fix caller-linkage to return the DLL and not the library tuple again; fixes issue #121
2011-09-13 15:10:48 -07:00
Joe Groff
5703e8d7a1
alien.libraries, compiler.cfg.builder.alien: if `dlopen` fails during `<library>`, call `dlerror` and store the error message in the library object; put the dlerror message in the linkage-error when a word from the library is compiled
2011-09-12 23:25:59 -07:00
Joe Groff
b6e0f0180b
alien.libraries, compiler.cfg.builder.alien: include the result of dlerror/GetLastError in the linkage-error for missing symbols
2011-09-12 23:25:59 -07:00
Slava Pestov
edddffdadd
compiler.cfg.dependence: Add ##allot to control dependency chain, so that we don't re-order an allocation and initialization with an alien call. The alien call might GC, exposing uninitialized memory to the GC. Fixes #53 , fixes #58 , fixes #20 .
2011-08-28 21:25:39 -07:00
Slava Pestov
34f71ea042
compiler.cfg.debugger: add random-scheduling word.
...
Run 'random-scheduling "compiler" test' to find bugs in compiler.cfg.dependencies.
2011-08-28 21:25:37 -07:00
Slava Pestov
3ed1910ab1
compiler.cfg.scheduling: remove old scheduling test code, adding a better way of testing scheduling
2011-08-28 21:25:35 -07:00
Erik Charlebois
64252dbdbc
32 and 64 bit Linux PPC support
2011-05-23 23:36:14 -04:00
Slava Pestov
5a3c5c7749
compiler.cfg.branch-splitting was totally broken
2011-02-27 16:43:26 -08:00
Slava Pestov
6f7e4e32d0
compiler.cfg.ssa.construction: update unit tests for nths change
2011-02-25 21:05:38 -08:00
Slava Pestov
b052aa61cb
compiler.cfg.linear-scan: extend lifetime intervals of base pointers correctly (reported by Anton Gorenko)
2010-09-30 20:49:03 -07:00
Slava Pestov
6b5fffc026
compiler: preliminary implementation of tracking derived pointers in GC maps
2010-09-27 20:12:44 -07:00
Slava Pestov
53aed0805a
compiler.cfg.alias-analysis: fix bug in lazy alias class instantiation
2010-09-27 20:12:43 -07:00
Slava Pestov
546b81b697
compiler.cfg.scheduling: always run scheduling because heuristic was broken
2010-09-25 16:31:42 -07:00
Slava Pestov
80d7aab40b
compiler.cfg.alias-analysis: don't need to do a local live-in calculation anymore
2010-09-25 16:13:17 -07:00
Slava Pestov
ec2f42fd40
compiler.cfg.liveness: merge in compiler.cfg.liveness.ssa and simplify the code, since we don't compute live sets before SSA construction anymore
2010-09-25 14:36:58 -07:00
Slava Pestov
8bc2ea7a5c
compiler.cfg.ssa.construction: use the baller method for pruned SSA
2010-09-20 21:36:22 -07:00
Slava Pestov
a67c7c5739
compiler.cfg.write-barrier: fix soundness issue with ##copy that never came up but probably should've been fixed anyway
2010-09-06 17:01:44 -07:00
Slava Pestov
a605d5c9c9
compiler.cfg.alias-analysis: dead store elimination was too aggressive, can't eliminate dead stores across a GC call even for fresh allocations because GC will see uninitialized data
2010-09-06 16:57:56 -07:00
Slava Pestov
add75411a0
compiler.cfg.write-barrier: handle ##copy instructions
2010-09-05 23:07:30 -07:00
Slava Pestov
54f97557e6
compiler.cfg.dependence: compute dependency graph for write barrier instructions
2010-09-05 22:51:17 -07:00
Slava Pestov
c677c35de4
compiler.cfg: fix major facepalm with write barrier elimination
2010-09-05 21:39:45 -07:00
Slava Pestov
1985705413
compiler: now that FFI has been deconcatenatized, we no longer need the special ##unary-float-function and ##binary-float-function fastpaths
2010-08-13 23:59:19 -07:00
Slava Pestov
b5fc39c198
compiler.cfg: Reading the return value of a float-returning function on x86-32 had a side effect of popping the x87 stack, so it was not correct for DCE to just eliminate this if the return value was not used. Fix this by adding a new dead-outputs slot to alien-call-insns and having DCE move dead returns there
2010-08-13 23:19:56 -07:00
Slava Pestov
42b858b3f0
math.libm: fix regression: fsqrt intrinsic was not working ever since change was made to inline FUNCTION: bodies
2010-08-12 21:41:57 -07:00
Slava Pestov
94f6ac98de
compiler.cfg.linear-scan: fix bad interaction between inactive intervals and sync points
2010-07-29 21:06:48 -04:00
Slava Pestov
168dd1f825
FFI rewrite part 7: compile callback bodies with the optimizing compiler
2010-07-28 00:49:26 -04:00
Slava Pestov
5fc9aa05b0
Revert "compiler.cfg: change linear ordering to place GC call blocks at the end"
...
This reverts commit 544a288192
.
2010-07-27 23:58:41 -04:00
Slava Pestov
8adde5360a
compiler.cfg: change linear ordering to place GC call blocks at the end
2010-07-27 13:00:28 -04: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
b6fe62299e
compiler.cfg.alias-analysis: factor-call-insns which defined values were not handled properly
2010-07-19 19:56:00 -04:00
Slava Pestov
b23aac1beb
compiler.cfg: open-code parameter boxing and unboxing for certain C types
2010-07-19 10:25:13 -04:00
Slava Pestov
8e46305288
compiler.cfg.save-contexts: don't insert ##save-context in front of ##phi
2010-07-19 09:27:10 -04:00
Slava Pestov
adc9db3ea8
compiler.cfg.linear-scan.allocation: fix wrong order
2010-07-19 06:46:50 -04:00
Slava Pestov
b776a92546
compiler.cfg.linear-scan: fix bad interaction between split position calculation and register-clobbering instructions
2010-07-18 17:38:52 -04:00
Slava Pestov
e3edb2653d
compiler.cfg.intrinsics.allot: clean up
2010-07-16 20:04:03 -04:00
Slava Pestov
e5dd21b0b9
compiler.cfg: nuke ##allot-byte-array instruction
2010-07-16 19:57:45 -04:00
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
Slava Pestov
0cde5c8fb5
Eliminate compiler.alien
2010-05-11 23:24:47 -04:00
Slava Pestov
ee0640f176
Move flatten-c-type to death row so that it can be executed in part 5
2010-05-11 22:26:31 -04:00
Slava Pestov
eb802208d1
FFI rewrite part 4: parameter and return value unboxing redesign
2010-05-11 19:11:44 -04:00
Slava Pestov
45689dbfe6
compiler: simplify ##unbox-small/large-struct by emitting an ##unbox-any-c-ptr first
2010-05-10 01:38:34 -04:00
Slava Pestov
4478c3a51a
FFI rewrite part 3: eliminate ##push-context-stack and ##pop-context-stack
2010-05-10 00:46:29 -04:00
Slava Pestov
7316d41226
FFI rewrite part 2: use ##peek and ##replace instructions to access stack
2010-05-09 23:26:43 -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
982e704626
compiler.cfg.linear-scan: clean up clobber-insn handling
2010-05-07 18:22:35 -04:00
Slava Pestov
627295f094
Language change: tuple slot setter words with stack effect ( value object -- ) are now named FOO<< instead of (>>FOO)
2010-05-06 17:21:02 -04:00
Slava Pestov
32ab6ca8d8
compiler.cfg.intrinsics: may as well use cell-size stores instead of 32-bit stores when initializing byte arrays
2010-05-05 13:23:00 -04:00
Slava Pestov
07092df20b
compiler.cfg.intrinsics.allot: fix <byte-array> intrinsic for real. Don't ever check in code without testing it
2010-05-05 13:17:20 -04:00
Slava Pestov
0dab9c7f9d
compiler.cfg.intrinsics.allot: <byte-array> intrinsic was writing past the end of the array and this was causing problems for scheduling
2010-05-05 02:17:57 -04:00
Slava Pestov
e763c74096
More FFI cleanups
2010-05-05 01:13:45 -04:00
Daniel Ehrenberg
24ad579631
Merge branch 'master' of git://factorcode.org/git/factor
2010-05-04 09:52:34 -05:00
Daniel Ehrenberg
4f66732c36
Fixing scheduling for compiler changes
2010-05-04 09:48:16 -05:00
Slava Pestov
572d7f77f8
compiler.cfg.value-numbering: don't use complex addressing modes unless architecture supports it
2010-05-04 05:46:21 -05:00
Slava Pestov
ad69052a1a
compiler.cfg.value-numbering: fix typo in unit test
2010-05-03 22:11:29 -04:00
Daniel Ehrenberg
b02208ceb2
Some fixes to merge scheduling
2010-05-03 17:54:46 -05:00
Daniel Ehrenberg
277705345f
Merge branch 'master' of git://factorcode.org/git/factor into s3
...
Conflicts:
basis/compiler/cfg/finalization/finalization.factor
2010-05-03 17:29:03 -05:00
Slava Pestov
4352902bb6
compiler.cfg.empty-blocks: remove unused pass
2010-05-03 18:23:54 -04:00
Slava Pestov
ca4f442eaa
compiler.cfg.alias-analysis: storing a reference into an object now merges the reference's alias class with the heap alias class
2010-05-03 18:20:28 -04:00
Daniel Ehrenberg
5509604ffe
Merge branch 'master' into s3
...
Conflicts:
basis/compiler/cfg/optimizer/optimizer.factor
2010-05-03 17:19:28 -05: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
86548320eb
compiler.cfg.value-numbering: fix unit test for 64-bit
2010-05-03 17:34:33 -04:00
Slava Pestov
f5c5d8b44c
compiler: remove flat machine representation and generate code directly from the CFG
2010-05-03 17:34:32 -04:00
Slava Pestov
5236f327ba
compiler.cfg.debugger: add ssa. word to print IR before representation selection runs
2010-05-03 17:34:31 -04:00
Slava Pestov
7f6ae34d72
Updating tests for recent compiler changes
2010-05-03 17:34:30 -04:00
Slava Pestov
38bafd2be8
compiler.cfg.linear-scan.assignment: spill slot representation logic was backwards, just like Factor
2010-05-03 17:34:29 -04:00
Slava Pestov
428ba9fd0f
compiler.cfg: fuse ##load-integer/##load-reference into ##replace to form ##replace-imm
2010-05-03 17:34:28 -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
5979fe7f41
compiler.cfg.copy-prop: optimistic copy propagation
2010-05-03 17:34:26 -04:00
Slava Pestov
e90712b1ed
compiler.cfg: cleanup
2010-05-03 17:34:26 -04:00
Slava Pestov
df86d1341f
compiler.cfg: clean up ##phi literals in tests
2010-05-03 17:34:24 -04:00
Slava Pestov
ffd1844d52
compiler.cfg.linear-scan: clean up spill slot assignment
2010-05-03 17:34:24 -04:00
Slava Pestov
65f86bfce7
compiler.cfg.ssa.detruction: coalesce different representations in more cases
2010-05-03 17:34:22 -04:00
Slava Pestov
ce73031ec3
compiler.cfg.alias-analysis: write unit tests and fix redundant store elimination
2010-05-03 17:34:22 -04:00
Slava Pestov
33eb15bf44
compiler.cfg.debugger: clean up and make it more flexible
2010-05-03 17:34:22 -04:00
Slava Pestov
43f269e4eb
Register allocation now uses SSA properties to coalesce values with different representations
2010-05-03 17:34:20 -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
43fc230c69
compiler.cfg.linear-scan: cleanups
2010-05-03 17:34:18 -04:00
Slava Pestov
d23bb19b55
Code cleanups
2010-05-03 17:34:17 -04:00
Slava Pestov
c55a6bb385
compiler.cfg.gc-checks: move phi instructions into GC check block, to ensure correct behavior
2010-05-03 17:34:17 -04:00
Slava Pestov
95ff5ffe51
New GC checks work in progress
2010-05-03 17:34:16 -04:00
Slava Pestov
db7403d697
compiler.cfg.linear-scan.resolve: fix incorrect behavior when one physical register is used with several representations in the same register class
2010-05-03 17:34:14 -04:00
Slava Pestov
51b13ce373
compiler.cfg.linear-scan: don't insert a _reload if the register is going to be overwritten anyway
2010-05-03 17:34:14 -04:00
Slava Pestov
a9ccfa8f05
strings: move string-nth primitive out of the VM and into the library
2010-05-03 17:34:12 -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
a141df595b
compiler.cfg.value-numbering: more cleanups
2010-05-03 17:34:10 -04:00
Slava Pestov
ef8094e3b3
compiler.cfg.value-numbering: identify VNs with their representative vregs, eliminating the vn>vreg hash
2010-05-03 17:34:10 -04:00
Slava Pestov
edaf59bf46
compiler.cfg.value-numbering: maintain a VN to instruction mapping. This eliminates all instances of expression inspection, allowing the auto-generated expression classes to be removed
2010-05-03 17:34:09 -04:00
Slava Pestov
f548a08637
compiler.cfg.value-numbering: remove constant -vs- literal distinction
2010-05-03 17:34:09 -04:00
Slava Pestov
9cea3f2c93
compiler.cfg.ssa.liveness: remove unused pass
2010-05-03 17:34:08 -04:00
Slava Pestov
732f57f31d
compiler.cfg.builder: fix unit tests
2010-05-03 17:34:08 -04:00
Slava Pestov
f14f2cbdab
compiler.cfg.value-numbering: merge 'simplify' pass into 'rewrite'
2010-05-03 17:34:08 -04:00
Slava Pestov
378c2b2a46
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
b8d556514c
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
2475699736
compiler.cfg: more flexible addressing for ##slot and ##set-slot
2010-05-03 17:34:06 -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
279eb461b1
compiler.cfg: remove ##set-string-nth-fast instruction since it can be expressed just as efficiently using other instructions
2010-05-03 17:34:04 -04:00
Slava Pestov
efd2a80d98
compiler.cfg.value-numbering: fix compile error
2010-05-03 17:34:04 -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
2ce926594d
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
2ca8d543f1
compiler.cfg.instructions: more typos
2010-05-03 17:34:02 -04:00
Slava Pestov
82fb1879af
Debugging untagged fixnums
2010-05-03 17:34:02 -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
Slava Pestov
8f0739197e
compiler.cfg: fix some bugs introduced by the ##compare-imm fusion patch
2010-04-18 21:42:45 -05:00
Slava Pestov
2aaf24412a
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
Daniel Ehrenberg
fbb1eb98a9
Improving dependence graph correctness
2010-04-18 19:59:52 -05:00
Daniel Ehrenberg
6892bac1ca
Making some scheduling assertions only run in unit tests
2010-04-15 17:36:43 -05:00
Daniel Ehrenberg
74de7d0e2a
Merge branch 'master' of git://factorcode.org/git/factor into s3
2010-04-15 17:28:53 -05:00
Joe Groff
3e0d86f355
Merge branch 'master' of git://factorcode.org/git/factor into abi-symbols
...
Conflicts:
basis/compiler/tests/alien.factor
2010-04-06 12:30:15 -07:00
Daniel Ehrenberg
aae69daa96
Fixing USING: line of scheduling to remove unnecessary vocabs
2010-04-05 15:45:06 -05:00
Daniel Ehrenberg
e22f66daf4
Scheduling has to come before representation selection, since the latter inserts memory operations
2010-04-05 00:24:12 -05:00
Daniel Ehrenberg
601b6f8457
Merge branch 'master' of git://factorcode.org/git/factor into s3
2010-04-04 19:43:15 -05:00
Slava Pestov
eceabbc57e
compiler: new set-special-object intrinsic; more efficient special-object intrinsic
2010-04-01 20:09:14 -04:00
Joe Groff
65c3259761
"cdecl" -> cdecl
2010-03-31 19:20:35 -07:00
Slava Pestov
d98e752199
compiler: add intrinsic for context-object primitive
2010-03-27 02:56:11 -04:00
Daniel Ehrenberg
31f23c8eba
Scheduling uses sets where appropriate
2010-03-24 10:38:52 -04:00
Daniel Ehrenberg
12db8a6c77
Merge branch 's3' of git://github.com/littledan/Factor into s3
2010-03-23 16:46:28 -04:00
Joe Groff
1d4d6f4ce8
factor code duplication in compiler.cfg.intrinsics.simd.backend
2010-03-20 10:57:04 -07:00
Joe Groff
f82a368602
compiler.cfg.intrinsics.simd.backend: eliminate duplicated work done on successful insn sequence
2010-03-20 02:51:49 -07:00
Joe Groff
ee4913702f
compiler.cfg.intrinsics.simd.backend: use less grotesque metaprogramming to determine simd instruction sequences
2010-03-20 02:16:50 -07:00
Daniel Ehrenberg
248730d39f
Cleaning up compiler.cfg.ssa.construction
2010-03-17 20:12:10 -04: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
Joe Groff
af57d4dfa9
fix ... in compiler.cfg.linearization
2010-03-05 14:27:58 -08:00
Daniel Ehrenberg
e3481a7ed7
compiler.cfg.def-use uses sets
2010-03-02 19:23:34 -05:00
Daniel Ehrenberg
1e5f202998
Maing vocabs.hierarchy use sets; modifying alias analysis's use of sets
2010-02-28 22:55:22 -05:00
Daniel Ehrenberg
1217dc9c6e
Making alias analysis use sets
2010-02-28 22:42:10 -05:00
Daniel Ehrenberg
7cd3360cdd
Fixing ambiguity between sets and namespaces in many unit tests and furnace.auth
2010-02-26 17:17:40 -05:00
Daniel Ehrenberg
6298203b4c
Making all of basis and extra unambiguous for sets/namespaces
2010-02-26 16:28:38 -05:00
Daniel Ehrenberg
7074979745
Moving new-sets to sets
2010-02-26 16:01:01 -05:00
Daniel Ehrenberg
a72e2cc96c
Finishing converting compiler.cfg.ssa.construction.tdmsc to new-sets
2010-02-26 13:53:20 -05:00
Daniel Ehrenberg
2034e1ef05
Fewer unnecessary dependence edges between stack operations, implemented by reviving stack height normalization. Now, 40% of spills and reloads are eliminated in total
2010-02-24 14:20:43 -06:00
Daniel Ehrenberg
04878057af
Compiler.cfg.{dce,linearization} use new-sets
2010-02-16 15:48:07 -06:00
Daniel Ehrenberg
30cc248bb3
Bit sets use new new set protocol, and compiler.cfg.ssa.construction.tdmsc is updated for it
2010-02-16 15:14:32 -06:00
Daniel Ehrenberg
6d36bfd104
Modifying dependence graph construction for faster compile time
2010-02-13 21:35:40 -06:00
Daniel Ehrenberg
4f7fd41cf2
Using original instruction order as a tiebreaker in scheduling
2010-02-11 23:12:17 -06:00
Daniel Ehrenberg
5a3d0fb883
Scheduling doesn't have such redundant data structures anymore
2010-02-11 21:21:22 -06:00
Daniel Ehrenberg
a6f255a985
Scheduling schedules more BBs--it was leaving out some ones that shouldn't've been. Now it's almost 30% of spills and reloads that are eliminated
2010-02-11 21:02:02 -06:00
Daniel Ehrenberg
edae2fa2d3
Making the fan-in tree generation work. Finally: a 20% reduction in spills and reloads on x86!
2010-02-11 00:19:53 -06:00
Daniel Ehrenberg
6fe9aa50f7
Working on fixing scheduling
2010-02-10 22:36:26 -06:00
Daniel Ehrenberg
04946dcddd
A first attempt at implementing Vivek Sarkar's algorithm for scheduling for register pressure
2010-02-10 21:43:30 -06:00
Slava Pestov
c5c94ef1f9
compiler.cfg.intrinsics.simd: ignore dummy assert-positive word
2010-01-31 18:19:14 +13:00
Doug Coleman
afdb7f6329
remove a stray character
2010-01-22 15:07:01 -06:00
Doug Coleman
8c1d202b4c
Rename accumulator to collector, pusher to selector
2010-01-22 15:00:53 -06:00
Slava Pestov
7155447aed
stack-checker: add inputs and outputs words, since 'infer (in>>|out>>) length' was coming up a lot
2010-01-15 08:04:14 +13:00
Slava Pestov
df4fb4a3ee
Removing integers-as-sequences
2010-01-15 07:15:33 +13:00
Slava Pestov
1c10196c43
Rename kernel.private:getenv/setenv to special-object/set-special-object to mirror recent renaming on the VM side
2010-01-13 18:08:18 +13:00
Slava Pestov
235f3238f5
Add alien-assembly form for inline assembler, works like alien-invoke except calls a user-supplied quotation instead of generating a subroutine call. Replaces FPU status control, SSE detection and read timestamp routines in vm/cpu-x86.*S
2010-01-07 17:39:22 +13:00
Slava Pestov
ba5b90e063
Change how non-volatile register preservation is done in alien callbacks, with the aim of fixing callbacks on PowerPC, and to eventually eliminate assembly code from VM
...
- Simplify calculation of offset in relocation table
- Open-code %alien-callback
- Remove magic_frame hack from context objects
- Move magical return instruction from optimizing compiler backend into callback entry stub
2010-01-03 01:11:51 +13:00
Slava Pestov
e96404327e
Get optimizing compiler working without global register variables in VM
2009-12-22 15:42:49 +13:00
Slava Pestov
0068bce934
vm: big overhaul of non-optimizing compiler
...
- change some primitives into sub-primitives: fixnum+ fixnum- fixnum* inline-cache-miss inline-cache-miss-tail
- rename some relocation types for clarity
- some other minor re-organizations and cleanups
2009-12-15 07:20:09 -05:00
Joe Groff
3e40a36c50
fix simd tests
2009-12-05 17:17:16 -08:00
Joe Groff
104c29aabc
simd intrinsic implementation for v*high, v*hs+, vavg, and vsad
2009-12-05 14:52:18 -08:00
Joe Groff
412b9d0c7a
change compiler.cfg.intrinsics.simd tests to not use types and operations that depend on host cell size
2009-12-04 13:23:31 -08:00
Joe Groff
63b89c65f9
don't use intrinsics for simd vector element operations when the component size doesn't fit in a fixnum
2009-12-03 12:46:56 -08:00
Joe Groff
67cc1c01be
Merge branch 'master' into simd-cleanup
2009-11-26 16:14:46 -08:00
Joe Groff
66d0cafa94
fix buggy simd intrinsics
2009-11-26 13:28:40 -08:00
Joe Groff
c916c7c856
don't try to rewrite redundant test-vector-exprs
2009-11-25 20:06:11 -08:00
Joe Groff
50f7dff422
change name of 'unsign-rep' to more sensible 'signed-rep'
2009-11-24 22:44:12 -08:00
Joe Groff
c98eb84943
make math.vectors.simd tests pass again
2009-11-24 18:30:12 -08:00
Joe Groff
9c388bf781
update compiler.cfg.intrinsics.simd tests
2009-11-24 12:50:27 -08:00
Joe Groff
65d8060075
fix simd intrinsic compilation
2009-11-24 11:37:28 -08:00
Joe Groff
152b0d2df5
break simd intrinsics into a separate vocab so they can be intrinsified before the simd methods compile
2009-11-19 11:53:46 -08:00
Joe Groff
59d85f7ad6
fix primitive emit fallback for simd intrinsics
2009-11-18 21:29:51 -08:00
Joe Groff
a3e4ecfc7d
enable simd intrinsics and fix first-pass compiler errors
2009-11-18 20:32:05 -08:00
Joe Groff
6583875055
tests for all simd intrinsics
2009-11-18 18:20:58 -08:00
Slava Pestov
0612bc6177
Factor source files should not be executable
2009-11-21 17:50:43 -06:00
Joe Groff
f545c5d3e5
properly handle -vector-op and case words in simd.backend
2009-11-18 12:36:41 -08:00
Joe Groff
cd2cf91b95
start on tests for simd intrinsics
2009-11-17 11:13:16 -08:00
Slava Pestov
e30d275e41
compiler.cfg: 'basic-block new hashcode' should not throw an exception; fixes tools.deploy.test.11
2009-11-16 02:01:36 -06:00
Joe Groff
d56afe9c3d
compilation fixes
2009-11-14 23:43:22 -06:00
Joe Groff
f544982fda
Merge branch 'master' of git://factorcode.org/git/factor into simd-cleanup
...
Conflicts:
basis/math/vectors/simd/functor/functor.factor
2009-11-14 21:02:39 -06:00
Joe Groff
8a8699ac98
backend fixups
2009-11-14 20:59:03 -06:00
Joe Groff
e323071c44
sever lingering dependencies on simd from compiler
2009-11-11 16:08:40 -06:00
Slava Pestov
41c17f0429
Fixing test failures
2009-11-11 02:40:24 -06:00
Slava Pestov
2afd7ce244
Faster identity-hashcode primitive; fast path now opencoded by the compiler
2009-11-11 02:27:19 -06:00
Joe Groff
eac9bacf40
backend for choosing available SIMD intrinsic implementations
2009-11-10 23:35:46 -06:00
Slava Pestov
064c00f78d
New identity-hashcode primitive
2009-11-10 21:18:54 -06:00
Slava Pestov
19283ed83d
compiler.cfg.intrinsics.slots: new implementation of value-tag
2009-11-10 17:30:27 -06:00
Joe Groff
75d04922b9
Merge branch 'master' into simd-cleanup
...
Conflicts:
basis/math/vectors/simd/functor/functor.factor
2009-11-05 11:27:08 -06:00
Joe Groff
4d54f27cd1
more intrinsic madness
2009-11-05 09:52:57 -06:00
Joe Groff
f6643a1c72
change ##horizontal-add-vector insn to better match what the HADD SSE instructions do (add adjacent pairs, pack results)
2009-11-04 12:18:01 -06:00
Slava Pestov
3c4c05e915
compiler.cfg.intrinsics.allot: fix inline byte array allocation on 32-bit platforms
2009-11-03 23:44:20 -06:00
Slava Pestov
109aa88b06
compiler: update unit tests for 4-bit tag change
2009-11-03 21:40:29 -06:00
Joe Groff
bd77633d5b
new intrinsic generators, pt1
2009-11-03 21:38:45 -06:00
Slava Pestov
51e9a891a8
cpu.x86: update %box-displaced-alien for introduction of address field
2009-11-03 03:17:43 -06:00
Slava Pestov
91ccc30a54
Merge branch 'master' into new_gc
2009-11-02 20:34:13 -06:00
Slava Pestov
0a15ae4d6b
compiler.cfg.intrinsics: uncomment line commented out by mistake
2009-11-02 20:33:14 -06: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
a3b5c07e80
Minor bug fixes for 4-bit tags
2009-11-02 17:41:36 -06:00
Joe Groff
e36eb438fa
move all simd intrinsics to compiler.cfg.intrinsics.simd, and only load it when math.vectors.simd is loaded
2009-11-02 15:17:34 -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
Joe Groff
1cf45abf06
Merge branch 'master' of git://factorcode.org/git/factor
2009-10-30 00:42:37 -05:00
Joe Groff
b858860a67
add ##shl-vector-imm and ##shr-vector-imm insn variants. use merge/shr instead of compare/merge to do signed unpacks
2009-10-30 00:41:19 -05:00
Doug Coleman
1d12a6707d
sigma -> map-sum
2009-10-29 14:34:04 -05:00
Joe Groff
3fbe722561
Merge branch 'master' of http://factorcode.org/git/factor
...
Conflicts:
basis/locals/locals.factor
basis/peg/peg.factor
extra/infix/infix.factor
2009-10-28 16:17:24 -05:00
Joe Groff
6e1bffb1c5
update existing code to use :> ( ) when possible
2009-10-28 16:11:33 -05: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
Doug Coleman
7ce4b746e5
parsed -> suffix!, add append!
2009-10-28 13:38:27 -05:00
Joe Groff
2ecf3fb568
fix load errors from bootstrapping
2009-10-28 12:51:03 -05:00
Slava Pestov
299b5b0f6c
filter-here -> filter!
2009-10-28 00:44:05 -05:00
Slava Pestov
50f5c3d116
remq -> remove-eq, delq -> remove-eq!
2009-10-28 00:23:08 -05:00
Slava Pestov
951e3e9c83
delete-nth -> remove-nth!
2009-10-27 23:41:57 -05:00
Slava Pestov
08e7d25dc5
change-each -> map!, deep-change-each -> deep-map!
2009-10-27 22:32:56 -05:00
Joe Groff
935c0797c3
update existing code for [let change
2009-10-27 22:05:37 -05:00
Joe Groff
c3b8847936
update a bunch of alien-callbacks and alien-indirects to use c-type words
2009-10-21 21:10:11 -05:00
Joe Groff
7fac3682a6
update some naked alien-invokes to use c-type words
2009-10-21 18:44:00 -05:00
Joe Groff
8a6b0a1453
generate unsigned vector comparison fallbacks using min/max or xor/signed compare
2009-10-20 22:30:57 -05:00
Joe Groff
cb36111a3c
generate better fallback code for vmin/vmax intrinsics
2009-10-20 19:22:38 -05:00
Joe Groff
6f72c3ca24
Merge branch 'master' of git://factorcode.org/git/factor
2009-10-20 17:42:29 -05:00
Joe Groff
764e085004
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
Slava Pestov
18be7e1f37
cpu.x86.32: only create 16-byte parameter area if the word calls into the VM
2009-10-20 05:02:42 -05:00
Slava Pestov
1e7893b6ce
compiler: FFI is now slightly more efficient when unboxing parameters, only changes data stack height once
2009-10-20 04:31:48 -05:00
Slava Pestov
2d5cdd19ec
compiler: on PPC, ANDI, ORI and XORI instructions take an unsigned 16-bit immediate, unlike ADDI, SUBI and MULLI which take a signed 16-bit immediate. The code generator was not aware of this, and so for example '[ >fixnum -16 bitand ]' would generate incorrect code. Split up small-enough? hook into immediate-arithmetic? and immediate-bitwise? and update value numbering to be aware of this. Fixes classes.struct bitfields test failure
2009-10-19 04:58:29 -05:00
Joe Groff
448ef2f1d5
fix unsigned vector unpack
2009-10-16 14:25:33 -05:00
Slava Pestov
d48c72a274
compiler.cfg: fix unit tests
2009-10-15 06:01:46 -05:00
Slava Pestov
7d97c19227
compiler: tweak ##write-barrier-imm
2009-10-15 02:40:23 -05:00
Slava Pestov
1ce39963fd
Working on adding support for the new write barrier to optimized code
2009-10-14 02:06:01 -05:00
Joe Groff
97ab9dc4ab
only emit ##alien-vector/##set-alien-vector insns if the rep is available
2009-10-10 12:53:10 -05:00
Joe Groff
d9002127fa
have vshuffle accept simd-128 variable byte shuffles
2009-10-10 11:30:11 -05:00
Joe Groff
3bc097f6ff
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
Joe Groff
471c86a110
generate better code for vabs when instruction isn't available instead of using software fallback (-0.0 andn for floats, x > 0 ? x : -x for signed ints, nop for unsigned ints)
2009-10-09 14:24:55 -05:00
Joe Groff
01f5d392be
implement vneg as an intrinsic in terms of load -0, subtract
2009-10-09 13:16:39 -05:00
Daniel Ehrenberg
2db25b937e
Doing constant folding on ##neg and ##not in value numbering
2009-10-08 01:57:54 -05:00
Joe Groff
dd691a61e8
break vector compare intrinsics into %compare, %or, and %not instructions that map directly to cpu instructions
2009-10-07 15:27:03 -05:00
Joe Groff
f2c9eb79e2
decompose %unpack-vector-head/tail into %compare-vector/%merge-vector-head/tail or %tail>head-vector/%unpack-vector-head insns when there isn't an actual unpack insn; get rid of fake x86 implementations
2009-10-07 14:09:46 -05:00
Joe Groff
fd6f370119
typo in convert-to-fill-vector?
2009-10-07 12:53:10 -05:00
Joe Groff
47cfb7d3a5
fix ##load-constant/##scalar>vector folding when constant is a fixnum
2009-10-07 12:46:08 -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
Joe Groff
34def34481
don't generate a ##not-vector instruction if the cpu doesn't have one; instead, fall back to a ##fill-vector/##xor-vector combo. get rid of pretend %not-vector in cpu.x86
2009-10-07 11:59:36 -05:00