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
Joe Groff
943596575a
use radix literals
2011-11-23 19:03:40 -08:00
Joe Groff
248066c710
code beautification
2011-11-13 16:10:26 -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
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
51c033a1f6
Fix all failures in the linux64 build email
2011-10-24 19:33:09 -07:00
Doug Coleman
3826febfae
Fixes the symptom but not the problem. See bug #201 .
2011-09-26 17:32:34 -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
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
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
86358b1dc3
alien.data: add with-scoped-allocation combinator for stack-allocating C data
2010-05-19 00:33:36 -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
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
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
5d35917061
compiler.cfg.intrinsics: intrinsic for fixnum-bit-count
2010-05-15 13:59:47 -07: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
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
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
95ff5ffe51
New GC checks work in progress
2010-05-03 17:34:16 -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
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
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
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
Slava Pestov
eceabbc57e
compiler: new set-special-object intrinsic; more efficient special-object intrinsic
2010-04-01 20:09:14 -04:00
Slava Pestov
d98e752199
compiler: add intrinsic for context-object primitive
2010-03-27 02:56:11 -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
Slava Pestov
c5c94ef1f9
compiler.cfg.intrinsics.simd: ignore dummy assert-positive word
2010-01-31 18:19:14 +13: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
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
66d0cafa94
fix buggy simd intrinsics
2009-11-26 13:28:40 -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
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
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
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
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
Slava Pestov
3c4c05e915
compiler.cfg.intrinsics.allot: fix inline byte array allocation on 32-bit platforms
2009-11-03 23:44:20 -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
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
Joe Groff
6e1bffb1c5
update existing code to use :> ( ) when possible
2009-10-28 16:11:33 -05:00
Joe Groff
2ecf3fb568
fix load errors from bootstrapping
2009-10-28 12:51:03 -05:00
Joe Groff
935c0797c3
update existing code for [let change
2009-10-27 22:05:37 -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
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
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
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
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
Joe Groff
785f8620fd
glue conversion intrinsics to instructions
2009-10-06 20:13:38 -05:00
Joe Groff
fbe810fc3b
rename SIMD vmerge and kids to (vmerge), make new vmerge more generally useful
2009-10-05 17:55:39 -05:00
Slava Pestov
b4e36608da
compiler.cfg: remove _gc instruction, it doesn't need to exist, and change GC checks to ensure that the right amount of space is available instead of blindly checking for 1Kb
2009-10-05 05:27:49 -05:00
Joe Groff
0c9c3d4859
add %merge-vector-head and %merge-vector-tail instructions to back vmerge
2009-10-03 21:48:53 -05:00
Joe Groff
04bb03bb61
add intrinsics for v<=, v<, v=, v>, v>=, vunordered?
2009-10-03 11:29:34 -05:00
Joe Groff
38f413a8a6
add intrinsic for vnot/vbitnot
2009-10-02 20:04:28 -05:00
Joe Groff
aa3392e50f
implement vand, vor, vandn, and vxor as bitwise intrinsics for simd types
2009-10-02 14:17:01 -05:00