Slava Pestov
064c00f78d
New identity-hashcode primitive
2009-11-10 21:18:54 -06:00
Slava Pestov
e9a7191050
Fix struct field alignment on PowerPC
2009-11-10 19:34:14 -06:00
Slava Pestov
41e340f231
More PowerPC fixes
2009-11-10 17:26:34 -06:00
Slava Pestov
1002898b7d
cpu.ppc: update megamorphic dispatch template
2009-11-10 17:13:20 -06:00
Joe Groff
8894e9047c
Merge branch 'master' into simd-cleanup
2009-11-07 22:26:09 -06:00
Joe Groff
00ce8b6a33
deprimitivize tuck and put it to pasture
2009-11-05 22:47:05 -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
fba6ddbc22
Move platform-specific c-type initialization out of cpu.* vocabularies and into alien.c-types so that the vm vocabulary, which is loaded before cpu.*, will have correct struct offsets
2009-11-05 01:36:14 -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
2b1a26228b
Align stack pointer on non-Mac OS X x86-32 platforms, and use aligned loads/stores for SIMD values
2009-11-03 23:51:44 -06:00
Joe Groff
d655c3c9cc
make horizontal shift available to float vectors (it'd still be faster than the software fallback despite pipeline penalty)
2009-11-03 21:38:29 -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
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
Slava Pestov
7e17c3077c
vm: new megamorphic hashcode algorithm improves bootstrap speed
2009-11-02 01:37:58 -06:00
Slava Pestov
f21199005d
Merge branch 'master' into new_gc
2009-11-01 22:17:27 -06:00
Joe Groff
aaba25527c
typo in cpu.x86
2009-11-01 19:39:57 -06:00
Joe Groff
36e4a141c4
clear destination register before doing CVTS* to break dependency chains
2009-11-01 18:29:12 -06:00
Joe Groff
fa8ec06ab5
SSE code generation improvements: always use MOVAPS to move float xmm registers to kill dependency chains, and favor -PS versions of logical, move, and shuffle ops to shrink code size
2009-11-01 16:09:44 -06:00
Slava Pestov
6f9336c29e
Merge branch 'master' into new_gc
2009-10-30 03:03:05 -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
Joe Groff
7e88ead665
fix build errors
2009-10-28 19:28:16 -05:00
Joe Groff
c5c31b4300
Merge branch 'master' of git://factorcode.org/git/factor
2009-10-28 16:19:37 -05:00
Doug Coleman
bb0921ef42
oops, cpu.arm was not loaded by default
2009-10-28 16:18:47 -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
bf27177e93
fix using
2009-10-28 15:32:34 -05:00
Doug Coleman
81439ab4be
make the ARM assembler unportable
2009-10-28 15:30:51 -05:00
Doug Coleman
bd13e018dd
memq? -> member-eq?, sorted-memq? -> sorted-member-eq?
2009-10-28 15:02:00 -05:00
Doug Coleman
7ce4b746e5
parsed -> suffix!, add append!
2009-10-28 13:38:27 -05:00
Slava Pestov
3394309659
Merge branch 'master' into new_gc
2009-10-22 05:40:57 -05:00
Joe Groff
66dc1c6311
oops, longlong comparison is sse4.2, not 4.1
2009-10-21 23:00:02 -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
Doug Coleman
f2b159529c
Merge branch 'master' into startup
2009-10-20 15:01:06 -04:00
Slava Pestov
d85d84697a
Change data heap alignment to 16 bytes
2009-10-20 12:45:00 -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
560b6f45cc
compiler, cpu.x86.32: clean up FFI implementation, in particular 32-bit x86-specific backend
2009-10-20 04:15:10 -05:00
Doug Coleman
6b6e56a179
change add-init-hook to add-startup-hook, new add-shutdown-hook word
2009-10-19 22:17:02 -04: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
Slava Pestov
86c16eeb6a
cpu.x86.32: fix callbacks on platforms where stack is not aligned
2009-10-17 21:20:08 -05:00
Joe Groff
a7fcaf027c
use FRSP to convert double to single on PPC
2009-10-17 00:13:50 -05:00
Slava Pestov
b762238f63
cpu.x86.32: fix magic stack frame handling
2009-10-16 21:07:09 -05:00
Slava Pestov
8aa4640094
cpu.ppc.bootstrap: fix callback-stub relocation
2009-10-16 12:06:40 -05:00
Slava Pestov
107c96f642
vm: code heap compaction at runtime using compact-gc primitive
2009-10-16 11:39:35 -05:00
Slava Pestov
982a8fa411
cpu.x86.64: fix typo
2009-10-15 23:29:56 -05:00
Slava Pestov
6641c530d5
cpu.x86: eliminate 2 instructions form write barrier on x86-32
2009-10-15 22:07:03 -05:00
Slava Pestov
15e4f08d78
Merge branch 'master' of git://factorcode.org/git/factor
2009-10-15 05:43:41 -05:00
Slava Pestov
d3ec94b5c9
cpu.x86: just a cleanup
2009-10-15 05:43:28 -05:00
Slava Pestov
70c69fbd67
cpu.ppc: fix %write-barrier
2009-10-15 05:13:47 -05:00
Slava Pestov
13ca35ba79
cpu.ppc: fix typo
2009-10-15 05:01:20 -05:00
Slava Pestov
a506754739
cpu.ppc: updates for write barrier and allocation changes (untested)
2009-10-15 04:54:16 -05:00
Slava Pestov
2efc7d1b9e
cpu.ppc.bootstrap: update for JIT relocation changes
2009-10-15 04:47:54 -05:00
Slava Pestov
7d97c19227
compiler: tweak ##write-barrier-imm
2009-10-15 02:40:23 -05:00
Slava Pestov
38d120f92e
vm: rt-vm relocation now supports accessing a field directly
2009-10-14 19:24: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
4e4be60884
use TEST reg, reg to compare integer equality with zero
2009-10-10 13:13:53 -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
a5898dffde
don't use MOVSLDUP/MOVSHDUP to do specialized shuffles unless sse3 is available
2009-10-10 12:00:47 -05:00
Joe Groff
1fa6f32790
fix x86 uchar %scalar>integer
2009-10-10 10:39:23 -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
Slava Pestov
9357ee378e
cpu.architecture: move dummy -reps words here, from cpu.ppc
2009-10-08 03:48:03 -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
4d5f727a63
sse doesn't actually have an unsigned->unsigned pack instruction
2009-10-07 12:00:31 -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
879fe9a665
fix x86 %unpack-vector insns
2009-10-06 20:38:51 -05:00
Joe Groff
da4cf61014
oops...PACKUSDW is sse4 only
2009-10-06 20:09:50 -05:00
Joe Groff
882f40d88e
%float>integer-vector should truncate
2009-10-06 13:57:54 -05:00
Joe Groff
529c444e32
add insns for vector pack, unpack, integer>float, and float>integer
2009-10-05 22:34:14 -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
74f15cfe8c
Merge branch 'master' of git://factorcode.org/git/factor
2009-10-03 10:02:26 -05:00
Joe Groff
4e024cbbc2
extend x86 %compare-vector to cover all comparison codes, sometimes stupidly for now
2009-10-02 23:19:56 -05:00
Slava Pestov
5fc3ad92f6
cpu.arm.assembler: dust it off, update to work with contemporary Factor, and clean it up a bit
2009-10-02 20:18:34 -05:00
Joe Groff
38f413a8a6
add intrinsic for vnot/vbitnot
2009-10-02 20:04:28 -05:00
Slava Pestov
df9b0f695f
cpu.ppc: remove useless comment
2009-10-02 03:31:53 -05:00
Slava Pestov
2c136d6536
Merge branch 'reentrantvm' of git://github.com/phildawes/factor
2009-10-02 03:28:21 -05:00
Joe Groff
53b265f682
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
f9695951a0
fold test-vector/branch sequences into a test-vector-branch instruction
2009-10-01 19:53:30 -05:00
Joe Groff
d14f150b58
%test-vector instruction for vany?, vall?, vnone?
2009-10-01 15:35:38 -05:00
Joe Groff
987ced4070
%compare-vector instruction (only does v= for now)
2009-10-01 14:31:37 -05:00
Joe Groff
a93f8f66f9
Revert "add a %blend-vector intrinsic for v?"
...
This reverts commit 21e4b28b67
.
2009-09-30 23:40:37 -05:00
Joe Groff
67cc45235d
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-30 23:04:04 -05:00
Joe Groff
7db7b63552
add a %blend-vector intrinsic for v?
2009-09-30 23:03:59 -05:00
Slava Pestov
2384b630b2
math.vectors.simd: use fallbacks for hlshift, hrshift, vshuffle if parameter is not a literal;al; element access in int-4 on x86-64 now sign-extends the value; don't throw error at compile time if parameter for vshuffle does not have enough elements
2009-09-30 20:04:37 -05:00
Slava Pestov
a7dd4ad5cc
cpu.ppc: update for alien intrinsic changes
2009-09-30 18:22:59 -05:00
Phil Dawes
bc70311e69
ppc asm to pass vm pointer: alien + compiled code
2009-09-30 21:23:53 +01: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
f395d83379
math.vectors.simd: add fast intrinsic for 'nth', replace broadcast primitive with shuffles
2009-09-29 04:48:11 -05:00
Slava Pestov
e40a95c1e1
math.vectors.simd: add vshuffle intrinsic
2009-09-28 23:12:13 -05:00
Slava Pestov
a8ea929ad9
Work in progress
2009-09-28 17:31:34 -05:00
Slava Pestov
e1a9b25562
cpu.ppc: update for %unary/binary-float-function change
2009-09-28 16:40:52 -05:00
Slava Pestov
4202211293
cpu.x86: cleanups
2009-09-28 16:38:35 -05:00
Joe Groff
01f526ff28
use PSHUFD for longlong-2 broadcast when dst != src to avoid a %copy
2009-09-28 12:04:08 -05:00
Joe Groff
7520da41cc
use MOVDDUP for double-2 broadcast to eliminate a %copy
2009-09-28 12:00:03 -05:00
Joe Groff
2e8bb98781
cpu.x86.assembler: make SSE shuffle instructions accept an array of indexes so they're easier to use
2009-09-28 11:45:45 -05:00
Joe Groff
965730efbe
SSE integer gather and broadcast
2009-09-28 11:24:08 -05:00
Slava Pestov
4abfe06b51
Fixing various test failures caused by C type parser change, and clarify C type docs some more
2009-09-28 08:48:39 -05:00
Slava Pestov
9a06e6f424
math.vectors.simd: add intrinsic for int-4-boa, uint-4-boa, fix tests for C type parser change, fix software fallback for horizontal shifts
2009-09-28 06:34:22 -05:00
Slava Pestov
08a2eb74f4
cpu.x86: shifts didn't work if dst != src1; re-organize file a bit
2009-09-28 05:39:53 -05:00
Slava Pestov
f73bb2d068
cpu.x86.32: fix %unary/binary-float-function on Windows; need to look up symbols in libm and not VM binary
2009-09-28 04:51:53 -05:00
Phil Dawes
6fa0a93498
ppc asm to pass vm pointer: initial bootstrap
2009-09-28 07:48:37 +01:00
Slava Pestov
7e4b9b6377
cpu.x86: fix regression: fsqrt intrinsic wasn't used
2009-09-28 02:27:55 -05:00
Slava Pestov
b2ea3afd84
math.vectors.simd: add hlshift, hrshift (128-bit shift), vbitandn intrinsics
2009-09-28 02:17:46 -05:00
Slava Pestov
59fbe85c9b
compiler.cfg: nuke ##bignum>integer and ##integer>bignum since they were unused
2009-09-27 20:36:05 -05:00
Slava Pestov
f757b454cc
Merge branch 'master' into more_aggressive_coalescing
2009-09-27 19:29:50 -05:00
Slava Pestov
705b4ab5c3
compiler.cfg.linear-scan: fix partial sync point logic in case where dst == src, and clean up spilling code
2009-09-27 19:28:20 -05:00
Slava Pestov
91e63c0c6f
cpu.x86.32: implement %unary-float-function and %binary-float-function; speeds up partial-sums and struct-arrays benchmarks
2009-09-27 18:06:30 -05:00
Slava Pestov
1e841e5086
compiler.cfg.ssa.destruction: more aggressive coalescing work in progress
2009-09-27 17:17:26 -05:00
Joe Groff
dce02fcdfb
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-26 20:38:19 -05:00
Joe Groff
2cf0f3e5d3
move alien.inline, alien.cxx, alien.marshall to unmaintained; nuke alien.structs
2009-09-26 20:37:42 -05:00
sheeple
3476f2e28c
Fixing PPC backend for ##slot change
2009-09-26 13:21:42 -05:00
sheeple
01a4047126
Merge branch 'slots' of git://factorcode.org/git/factor into slots
...
Conflicts:
basis/cpu/x86/x86.factor
2009-09-26 03:12:42 -05:00
Daniel Ehrenberg
30bca97b61
An attempt at porting the slot change to PPC
2009-09-26 02:58:18 -05:00
Daniel Ehrenberg
51f2bbd74b
Completing slot and set-slot changes on x86
2009-09-26 01:39:48 -05:00
Daniel Ehrenberg
7bd330cfd5
Making ##slot and ##set-slot not have a temporary parameter
2009-09-26 00:28:14 -05:00
Slava Pestov
8610fa5e48
cpu: cleanups
2009-09-25 21:47:05 -05:00
Phil Dawes
46f90c7588
removed %vm-invoke-*-arg completely
2009-09-25 20:03:03 +01:00
Phil Dawes
d457df1fbf
moved %(un)nest-stacks out to cpu specific files to eliminate %vm-invoke from compiler.codegen
2009-09-25 19:32:08 +01:00
Phil Dawes
28420c587a
isolated %vm-invoke-blah-arg crap to 64.factor
2009-09-25 19:02:41 +01:00
Phil Dawes
68f85a69b3
removed param-reg-* HOOKs
2009-09-25 18:58:55 +01:00
Phil Dawes
a07a2f7496
compiler.codegen passes temp reg to %call-gc
2009-09-25 18:48:13 +01:00
Phil Dawes
4552e02624
made inline_gc a VM_C_API function
2009-09-25 18:29:07 +01:00
Slava Pestov
93149a6be9
Merge branch 'fix_stack_alignment' of git://github.com/phildawes/factor
2009-09-24 19:54:51 -05:00
Phil Dawes
f5c70d4ad7
make inline_gc regparm(3) and cleaned up %call-gc stack alignment
2009-09-24 21:45:56 +01:00
Slava Pestov
0686a7a65c
cpu.ppc: add representation hooks for shifts
2009-09-24 13:00:12 -05:00
Slava Pestov
cb497f009b
Merge branch 'vm_cleanup' of git://github.com/phildawes/factor
2009-09-24 04:31:55 -05:00
Slava Pestov
1b84f179cd
cpu.x86: don't generate SSE2 instructions if only SSE1 is available
2009-09-24 04:07:15 -05:00
Slava Pestov
abe3b869cf
cpu.ppc: fix compile errors
2009-09-24 03:55:01 -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
Phil Dawes
a3c84ea278
x86 bootstrap cleanup: renamed arg to arg1
2009-09-24 08:16:57 +01:00
Phil Dawes
d25fe552ab
removed superflous whitspace lines
2009-09-24 08:02:14 +01:00
Slava Pestov
e4d566b1c2
cpu.ppc: make it load
2009-09-24 00:13:27 -05:00
Slava Pestov
3d0c9c4337
cpu.ppc: fix typos
2009-09-23 23:38:17 -05:00
Slava Pestov
4ec566b15d
cpu.x86/ppc: unify register-to-register moves using %copy so that better coalescing can eliminate more moves later
2009-09-23 22:49:54 -05:00
Slava Pestov
3104aa3962
cpu.ppc: add dummy vector ops
2009-09-23 20:31:12 -05:00
Slava Pestov
dfc9fd071e
Add longlong-2, ulonglong-2, longlong-4, ulonglong-4 SIMD types, fix int-4 multiplication on SSE2
2009-09-23 20:23:25 -05:00
Slava Pestov
563ecbd871
cpu.x86.assembler: cleanup
2009-09-23 19:30:36 -05:00
Slava Pestov
6d4e5af088
cpu.x86.features: don't fold away sse-version, instead memoize it and recompute on startup
2009-09-23 05:13:15 -05:00
Slava Pestov
43fa252af5
math.vectors.simd: new operations: vabs vsqrt vbitand vbitor vbitxor
2009-09-23 02:47:14 -05:00
Slava Pestov
d23826906f
Merge branch 'master' into integer-simd
2009-09-22 20:21:40 -05:00
Slava Pestov
b0f87fd6a0
cpu.ppc: fix load errors
2009-09-22 05:24:34 -05:00
Slava Pestov
603a560eaf
cpu.x86: fix using list
2009-09-20 23:24:30 -05:00
Slava Pestov
9d90bdd439
Fix conflict
2009-09-20 23:18:07 -05:00
Slava Pestov
ea44ea3522
math.vectors.simd: add saturated arithmetic operations
2009-09-20 23:16:02 -05:00
Slava Pestov
acea55c692
math.vectors: add v+- word which is accelerated by SSE3
2009-09-20 17:43:16 -05:00
Slava Pestov
47d8763340
More integer SIMD work
...
- move generated vocab support from specialized-arrays to vocabs.generated
- add fuzz testing to math.vectors.simd
- add alien type support for integer SIMD vectors
- SIMD: parsing word generates a SIMD type, instead of pre-generating them all in math.vectors.simd
2009-09-20 16:48:17 -05:00
Slava Pestov
29c4512066
cpu.x86: cleanup
2009-09-20 04:17:34 -05:00
Slava Pestov
f8a91438cd
Merge Phil Dawes' VM work
2009-09-20 03:48:08 -05:00
Slava Pestov
e77341b90c
math.vectors.simd: redesign to be more flexible, integer SIMD work in progress
2009-09-20 02:08:32 -05:00
Joe Groff
076ab42dc3
move some allocation words that don't really have much to do with c types out of alien.c-types into a new alien.data vocab
2009-09-17 22:36:05 -05:00
Joe Groff
aa1edad078
disambiguate math:float in cpu.ppc
2009-09-17 19:10:40 -05:00
Joe Groff
01d2ef415a
get compiler tests loading
2009-09-16 09:20:47 -05:00
Phil Dawes
c7b7517f36
small x86 asm cleanup
2009-09-16 08:22:17 +01:00
Phil Dawes
8a65f35c31
vm passed in primitives as arg0 for x86.64
2009-09-16 08:22:17 +01:00
Phil Dawes
4af25578d8
fixed up some alien boxing (x86 32 & 64)
2009-09-16 08:20:50 +01:00
Phil Dawes
0470b7d2c5
fixed vm ptr passing to to_value_struct
2009-09-16 08:20:50 +01:00
Phil Dawes
1b92721660
fixed vm ptr passing to box_small_struct
2009-09-16 08:20:50 +01:00
Phil Dawes
888eae9554
fixed vm ptr passing to box_value_struct
2009-09-16 08:20:50 +01:00
Phil Dawes
3345922330
quick test vocab for mt stuff
2009-09-16 08:20:50 +01:00
Phil Dawes
b02c602a89
added vm passing to some alien/boxing functions and added some vm asserts
2009-09-16 08:20:10 +01:00
Phil Dawes
5cd2fbb564
vm ptr passed to lazy_jit_compile on x86.64
2009-09-16 08:20:10 +01:00
Phil Dawes
be1b079eb5
Primitives now pass vm ptr on 64bit x86
2009-09-16 08:20:09 +01:00
Phil Dawes
0bc7c0c1d0
separated vm-1st-arg and vm-3rd-arg asm invoke words (needed for ppc & x86.64)
2009-09-16 08:20:09 +01:00
Phil Dawes
005549ba43
vm pointer passed to nest_stacks and unnest_stacks (win32)
2009-09-16 08:17:26 +01:00
Phil Dawes
cdb6304fef
Dev checkpoint
2009-09-16 08:17:26 +01:00
Phil Dawes
3b52df9e02
added vm ptr to x86.32 boxing asm
2009-09-16 08:16:33 +01:00
Phil Dawes
ff54a57eb3
added code to pass vm ptr to some unboxers
2009-09-16 08:16:32 +01:00
Phil Dawes
ff8f2b10ec
fixed up getenv compiler intrinsic to use vm struct userenv
2009-09-16 08:16:32 +01:00
Phil Dawes
5bb04857bf
moved cards_offset and decks_offset into vm struct (for x86)
2009-09-16 08:16:31 +01:00
Phil Dawes
c010afc345
nursery global variable moved into vm
2009-09-16 08:16:31 +01:00
Phil Dawes
0be499de8a
renamed to vm-field-offset. Slava's better at naming than me
2009-09-16 08:16:31 +01:00
sheeple
0b0937cf0e
ppc asm to get stack_chain using vm ptr
2009-09-16 08:16:31 +01:00
Phil Dawes
88d3179358
Added a vm C-STRUCT, using it for struct offsets in x86 asm
2009-09-16 08:16:31 +01:00
Phil Dawes
9a37b6abb6
moved stack_chain into vm struct
2009-09-16 08:16:31 +01:00
Phil Dawes
465f06ebc2
throw_impl now forwards the vm ptr
2009-09-16 08:16:30 +01:00
Phil Dawes
4afc16e95b
passing vm ptr to lazy_jit_compile mostly working
2009-09-16 08:16:30 +01:00
Phil Dawes
6a193bb0d5
Added %vm-invoke to pass vm ptr to vm functions (x86.32 only, otherwise uses singleton vm)
2009-09-16 08:16:30 +01:00
Phil Dawes
57011aed51
vm ptr passed to primitives on X86.32 (other cpus still use singleton vm ptr)
2009-09-16 08:16:30 +01:00
Joe Groff
3b4330fcf6
get things to a point where they bootstrap again
2009-09-15 21:43:18 -05:00
Joe Groff
ab8abeaee4
Merge branch 'master' into c-type-words
2009-09-15 19:14:41 -05:00
Joe Groff
4d16c569f0
struct classes now make their own C type without help from alien.structs. remove alien.structs dependencies from everywhere outside of alien and compiler, and have the FFI handle both alien.structs and classes.struct c-types
2009-09-15 17:38:49 -05:00
Joe Groff
35b76b83af
convert compiler cpu backends to use c-type words
2009-09-15 16:08:42 -05:00
Slava Pestov
64cddef3e1
cpu.ppc: fix %single>double-float and %double>single-float
2009-09-10 13:04:58 -05:00
Joe Groff
4d1e832f79
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-09 17:14:48 -05:00
Joe Groff
c50a35c062
altivec instructions for powerpc assembler
2009-09-09 17:14:36 -05:00
Slava Pestov
ed09dfe3ae
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-09 13:56:20 -05:00
Slava Pestov
daff63071f
Fix the build
2009-09-09 13:44:54 -05:00
Slava Pestov
a01f693335
cpu.ppc: fix bootstrap
2009-09-08 23:53:51 -05:00
Slava Pestov
0e2a3e4292
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-08 22:34:17 -05:00
Slava Pestov
cd5133b233
cpu.x86: tweak SIMD intrinsics
2009-09-08 22:34:01 -05:00
Joe Groff
f166797dd4
no really, update ppc for argument order changes
2009-09-08 22:21:00 -05:00
Joe Groff
3003b9e5d0
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-08 21:58:25 -05:00
Joe Groff
c95a7febb0
update cpu.ppc for argument order changes
2009-09-08 21:58:11 -05:00
Slava Pestov
8916fb7a3c
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-08 21:51:21 -05:00
Slava Pestov
7e2f0e5dbf
compiler: separate ##save-context instruction from ##alien-invoke, generate a ##save-context for libm calls, and add a pass to combine multiple context saves within a basic block. Fixes crashes with FP traps thrown by libm functions on x86-32
2009-09-08 21:50:55 -05:00
Joe Groff
9be1f42fe9
typos in cpu.ppc
2009-09-08 21:44:11 -05:00
Slava Pestov
410d2bf0d0
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-08 19:35:14 -05:00
Slava Pestov
74fa73aeaf
Fix various test failures
2009-09-08 19:18:56 -05:00
Doug Coleman
d02d95ea34
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-08 17:05:58 -05:00
Joe Groff
0ea9949e51
split unordered and ordered float comparison intrinsics in compiler; generate only unordered comparisons for now
2009-09-08 17:04:26 -05:00
Doug Coleman
740a175e56
duplicate using
2009-09-08 17:02:31 -05:00
Slava Pestov
8b6ec8e030
cpu.x86.features: better wording
2009-09-08 14:17:05 -05:00
Slava Pestov
e5e7c1f725
cpu.x86.features: add -sse-version command-line switch to override SSE detection
2009-09-08 13:56:37 -05:00
Slava Pestov
1e5bc3b376
inline alien-vector and set-alien-vector if SIMD is not available for a small speedup
2009-09-08 13:56:17 -05:00
Slava Pestov
38c961cf6f
Fixes
2009-09-08 00:13:18 -05:00
Slava Pestov
bbca00e2ae
Fix conflicts
2009-09-07 23:51:25 -05:00
Joe Groff
d47d747ebc
i had comisd/ucomisd backwards on x86
2009-09-04 12:30:30 -05:00
Slava Pestov
382e1d5b0e
fix some typos in cpu.ppc
2009-09-04 11:18:41 -05:00
Slava Pestov
92d5d8f0c5
Merge branch 'master' of git://factorcode.org/git/factor into ppc-float-compare
2009-09-04 10:58:50 -05:00
Joe Groff
638e351131
update powerpc compiler to generate correct float comparisons
2009-09-04 10:51:12 -05:00
Slava Pestov
fc1bf07a1f
cpu.ppc: fix typo
2009-09-04 06:41:33 -05:00
Slava Pestov
e36a0d7ef4
compiler: clean up code generation for alien boxing/unboxing a bit
2009-09-03 21:22:43 -05:00
Joe Groff
c480bec303
convert comparison branch code in compiler to use locals
2009-09-03 21:19:39 -05:00
Slava Pestov
4d5a4222b6
More SIMD work
...
- Rename SIMD types and register representations: <type>-<count> rather than <count><type>-array
- Make a functor to define 256-bit vector types, use it to define float-8 type
- Make SIMD instructions pure-insns so that they participate in value numbering
2009-09-03 20:58:56 -05:00
Joe Groff
036ff77306
add compiler comparison codes for floating-point unordered comparisons; update x86 backend to generate proper code for all floating-point comparisons
2009-09-03 20:32:05 -05:00
Slava Pestov
3d4c04302a
Merge branch 'master' into simd
2009-09-03 03:45:58 -05:00
Slava Pestov
906a0d212a
Detect SSE version and enable the correct set of SIMD intrinsics
2009-09-03 03:28:38 -05:00
Slava Pestov
ff8c70dbe0
Initial implementation of SSE vector intrinsics:
...
- cpu.architecture: add SSE vector representations
- compiler.cfg.intrinsics.alien: remove an attempt at optimization that value numbering handles now
- compiler.cfg.representations: support instructions where the representation is set in the 'rep' slot, and support conversions between single and double floats
- alien-float, set-alien-float now use the single float representation, and the conversion is implicit; this fixes a long-standing bug where a register could get clobbered because of how %set-alien-float was defined on x86
- math.vectors.specialization: add support for SIMD specialization (where the vector word's body is replaced by another quotation), also specialize the 'sum' word
- math.vectors.simd: 4float-array, 2double-array, 4double-array types, and specializers for the math.vectors words
2009-09-03 02:33:07 -05:00
Joe Groff
102df64ec7
i suck at reading tech docs--those were m64 instructions, not mm instructions
2009-09-02 12:58:35 -05:00
Joe Groff
962d560c10
get rid of useless mm->xmm instructions in cpu.x86.assembler, add MOVHLPS and MOVLHPS
2009-09-02 11:06:08 -05:00
Slava Pestov
85a2bfab6c
compiler: eliminate boilerplate by centralizing info in declarative INSN: syntax
2009-09-02 06:22:37 -05:00
Slava Pestov
f91b539c31
cpu.ppc: implement fast float function calls; 3x speedup on benchmark.struct-arrays on PowerPC
2009-09-01 15:19:26 -05:00
Slava Pestov
6f1a7c731c
cpu.ppc: fix %box-displaced-alien
2009-08-30 20:56:04 -05:00
Slava Pestov
9595be4bf9
%box-displaced-alien: fix clobberage found by Doug
2009-08-30 05:11:08 -05:00
Slava Pestov
0db01f6d5f
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
2bb6293217
compiler: add fixnum-min/max intrinsics; ~10% speedup on benchmark.yuv-to-rgb
2009-08-28 19:02:59 -05:00
Slava Pestov
d957ae4e44
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
sheeple
98f93f799b
cpu.ppc: fix ##box-displaced-alien
2009-08-27 04:43:45 -05:00
Slava Pestov
f662e6403a
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
0df8aadce2
cpu.x86: use SQRTSD instruction for math.libm:fsqrt word
2009-08-25 23:22:15 -05:00
Slava Pestov
b7e29ca8dd
cpu.ppc.assembler: LOAD32 assembler macro was busted
2009-08-25 22:37:10 -05:00
Slava Pestov
1afd001393
basis/cpu: eliminate some usages of rot
2009-08-25 19:38:48 -05:00
Slava Pestov
7b2c9df341
cpu.ppc.assembler: fix FMR and FMR. opcodes
2009-08-25 19:33:35 -05:00
sheeple
b14dd8ab67
cpu.ppc: integer>fixnum scratch area overlapped with the rest of stack frame, very bad
2009-08-22 20:23:28 -05:00
Slava Pestov
2c533472f8
Merge branch 'master' of git://factorcode.org/git/factor
2009-08-21 18:48:44 -05:00
Slava Pestov
9ab8734441
cpu.ppc: work in progress
2009-08-21 18:48:34 -05:00
Doug Coleman
3f3d57032b
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
4b7ba38aab
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
725280d424
Split off the notion of a register representation from a register class
2009-08-07 17:44:50 -05:00
Slava Pestov
eb3bd1edea
cpu.x86.assembler: make some words private
2009-08-05 18:30:42 -05:00
Slava Pestov
61fe034e3e
cpu.ppc: put spill slots and GC roots in stack frame where subroutine calls can't clobber them
2009-07-31 23:47:07 -05:00
Slava Pestov
9a80fdb81b
Merge branch 'master' of git://factorcode.org/git/factor
2009-07-31 17:59:00 -05:00
Slava Pestov
957a5b7b9b
cpu.ppc: fix small typos
2009-07-31 17:57:15 -05:00
Doug Coleman
3258f9c4ef
fix using list on win64
2009-07-31 16:27:18 -05:00
Slava Pestov
dd2dc2bb24
cpu.ppc: Updating PowerPC backend for codegen changes over the last two months: new shift intrinsics added, fixnum overflow intrinsics are now treated like conditionals, GC checks are more complex and have a different API
2009-07-30 21:44:22 -05:00
Slava Pestov
45770c6250
Move a bunch of GC check generation logic to platform-independent side
2009-07-30 21:28:27 -05:00
Slava Pestov
b43c8b40ac
Merge branch 'master' of git://factorcode.org/git/factor
2009-07-30 19:11:02 -05:00
Joe Groff
b6ddcafcbd
Merge branch 'master' of git://factorcode.org/git/factor
2009-07-30 11:05:36 -05:00
Joe Groff
455956b16c
add additional SSE2 packed integer operations
2009-07-30 11:05:12 -05:00
Slava Pestov
be363d1a5b
compiler.cfg: Get inline GC checks working again, using a dataflow analysis to compute uninitialized stack locations in compiler.cfg.stacks.uninitialized. Re-enable intrinsics which use inline allocation
2009-07-30 09:19:44 -05:00
Slava Pestov
cd7a1d6c58
Oopsie
2009-07-30 08:27:52 -05:00
Slava Pestov
d71e2f9577
cpu.x86: Fix shuffle bug. Shuffling bugs occurring in code that runs before optimizer/stack checker is online are only caught at runtime during bootstrap, what a pain
2009-07-30 05:12:40 -05:00
Slava Pestov
d81dec5d45
cpu.x86: fix a bug in small-register logic on 32-bit. Also, on 32-bit, we don't need to do any special register shuffling to work with 16-bit operands since all registers have 16-bit variants. So now only 8-bit operands on x86-32 require special treatment
2009-07-30 05:04:46 -05:00
Slava Pestov
a9977d7c79
cpu.x86: update non-optimizing compiler backends for assembler vocab split
2009-07-30 02:22:37 -05:00
Slava Pestov
1e8d13c1f1
cpu.x86.assembler: fix extended 8-bit registers (DIL, SIL, SPL, BPL)
2009-07-29 22:32:22 -05:00
Slava Pestov
8ca17d053c
cpu.x86: use full set of 8-bit, 16-bit and 32-bit registers on x86-64 to avoid clumsy save/restore logic
2009-07-29 21:56:37 -05:00
Slava Pestov
73862a9a03
cpu.x86.assembler: move operands to operands sub-vocabulary, clean up small-reg-* code in compiler backend
2009-07-29 21:44:08 -05:00
Slava Pestov
09d89c0d17
Merge branch 'dcn'
2009-07-28 12:37:45 -05:00
Joe Groff
9f3c8a9959
SSE4 opcodes for x86 assembler
2009-07-28 12:19:37 -05:00
Slava Pestov
4175585fd4
Merge branch 'master' into dcn
2009-07-28 11:20:43 -05:00
Joe Groff
5372113fce
SSE1–SSSE3 opcodes + branch hints for x86 assembler
2009-07-28 00:22:27 -05:00
Slava Pestov
bfb2a4c1fc
cpu.x86: compile a load of zero, and adds, subs where dst = src1 more efficiently
2009-07-27 22:27:54 -05:00
Slava Pestov
3fb4fc1bde
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
e76dce8aff
Overflowing fixnum intrinsics now expand into several CFG nodes. This speeds up the common case since only the uncommon case is now a stack syncpoint
2009-07-16 18:29:40 -05:00
Slava Pestov
768e2a5148
compiler.cfg: split off condition codes into a comparisons sub-vocabulary
2009-07-13 14:42:52 -05:00
Slava Pestov
1157f58f37
cpu.x86.32: don't emit sub %esp,0x0 in prologue on Linux and Windows
2009-07-01 18:13:45 -05:00
Slava Pestov
4db44cd23f
%dispatch: sometimes the generated sequence is one byte longer, so instead of hard-coding it, compute the right length
2009-06-30 18:11:15 -05:00
Slava Pestov
fc6c9e2dfd
cpu.x86: don't clobber src in %dispatch
2009-06-30 16:47:22 -05:00
Slava Pestov
45a2105449
cpu.x86.assembler: IMUL2 instruction was busted for immediate operands
...
When given a register and an immediate, it would generate imul imm,dst,dst however the 64-bit prefix was generated wrong and if dst was an extended register only the first operand would be an extended register. To fix this, change IMUL2 to not work on immediates anymore, and added a new IMUL3 that takes a destination register, source register, and immediate. Also, change compiler.cfg.two-operand to not two-operandize %mul-imm, since this isn't needed anymore.
This fixes the sporadic benchmark.tuple-arrays crash on 64-bit machines.
2009-06-08 21:15:52 -05:00
Slava Pestov
9ad9600764
Remove %dispatch-label since its tehe same on all platforms; fix %gc on PowerPC
2009-06-07 21:46:28 -05:00
Slava Pestov
49f670be05
Fix 32-bit bootstrap
2009-06-03 03:23:55 -05:00
Slava Pestov
ade5db2405
cpu.x86: fix small register intrinsics on x86-64
2009-06-03 03:22:46 -05:00
Slava Pestov
2d231f066a
GC checks now save and restore registers
2009-06-02 18:23:47 -05:00
Slava Pestov
9e987e8642
Merge branch 'master' into global_optimization
2009-06-01 03:12:32 -05:00
Slava Pestov
b389dcf441
Redo compiler.codegen.fixup and get %dispatch to work
2009-06-01 02:32:36 -05:00
Slava Pestov
fc152ef210
Various improvements aimed at getting local optimization regressions fixed:
...
- Rename _gc to ##gc
- Absolute labels are now supported
- Generate _dispatch-label
2009-05-31 23:28:08 -05:00
Slava Pestov
617e57fc75
cpu.x86.features: add RDTSC support. This is a new vocabulary with words: sse2? instruction-counter count-instructions
2009-05-31 15:02:14 -05:00
Slava Pestov
76d74c16af
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
U-C4\Administrator
02b769475b
fix duplicate using lines
2009-05-17 20:29:32 -05:00
Slava Pestov
93509cdcec
Fix cpu.ppc for strict vocabulary search path semantics
2009-05-16 08:58:10 -05:00
Slava Pestov
66a9416473
Update documentation for stricter vocabulary search path semantics
2009-05-16 00:29:21 -05:00
Slava Pestov
05e0171dea
cpu.ppc: really fix bool type
2009-05-10 19:10:20 -05:00
Slava Pestov
9986f6e23e
Fix bool type on PowerPC
2009-05-10 19:01:38 -05:00
Slava Pestov
94bd764d35
Merge branch 'master' of git://factorcode.org/git/factor
2009-05-07 23:26:37 -05:00
Slava Pestov
e52476f108
cpu.ppc: fix alien-indirect
2009-05-07 23:26:33 -05:00
Slava Pestov
ff674dac22
cpu.ppc: bools are 4 bytes on OS X/PowerPC
2009-05-07 23:18:41 -05:00
Slava Pestov
b9169a6de2
Merge branch 'master' of git://factorcode.org/git/factor
2009-05-07 19:47:42 -05:00
Slava Pestov
5c4bb80bc3
Update PowerPC %jump and %dispatch-label, and add PIC-related functions to cpu-ppc.hpp
2009-05-07 19:47:38 -05:00
Slava Pestov
4a2492c3fc
Merge branch 'master' of git://factorcode.org/git/factor
2009-05-07 19:41:54 -05:00
Slava Pestov
25886ff453
cpu.ppc.bootstrap: updates
2009-05-07 19:40:25 -05:00
Slava Pestov
63b963e12a
Fix x86-64 backend
2009-05-07 16:58:18 -05:00
Slava Pestov
3591f6c684
Count megamorphic cache hits
2009-05-07 14:26:08 -05:00
Slava Pestov
318552ba60
Fix tail call PICs on x86-64
2009-05-06 22:44:30 -05:00
Slava Pestov
4915e1ced7
Clean up bootstrap.image, and implement new calling convention for tail calls; tail call sites now have PICs
2009-05-06 22:04:01 -05:00
Slava Pestov
12a34d81f7
JIT now supports multiple relocations per code template. This simplifies non-optimizing compiler backends
2009-05-06 20:04:49 -05:00
Slava Pestov
581d017b46
Working on inline caching for tail call sites
2009-05-06 19:22:22 -05:00
Slava Pestov
c93d876075
Better separation of concerns: cpu.{x86,ppc}.assembler no longer depends on compiler.codegen.fixup and cpu.architecture. Rename rt-xt-direct to rt-xt-pic to better explain its purpose
2009-05-06 16:14:53 -05:00
Slava Pestov
075fb1d3a6
Merge branch 'master' of git://factorcode.org/git/factor
2009-05-06 15:34:48 -05:00
Slava Pestov
49409b4d8c
Working on PowerPC backend
2009-05-06 15:39:03 -05:00
Slava Pestov
bf887cf028
cpu.ppc.bootstrap: working on polymorphic inline caching for PowerPC
2009-05-06 15:30:52 -05:00
Slava Pestov
867ff51b83
Remove some unused constants and update an obsolete comment
2009-05-06 14:57:17 -05:00
Slava Pestov
50826084f0
cpu.x86.bootstrap: remove obsolete comment
2009-05-05 20:56:44 -05:00
Slava Pestov
33d5bce670
cpu.ppc.assembler: update for code_format=1
2009-05-05 20:56:36 -05:00
Slava Pestov
e9e095f240
Rename enable/disable-compiler to enable/disable-optimizer, and add with-optimizer and without-optimizer combinators
2009-05-01 05:52:05 -05:00
Slava Pestov
742d574162
Non-optimizing compiler doesn't need to optimize 'dispatch' primitive anymore since its rarely used
2009-04-30 19:42:08 -05:00
Slava Pestov
f9ec0a07c5
Fix PICs for x86-64
2009-04-30 18:00:49 -05:00
Slava Pestov
5c9dc6d753
Tag-only PIC checks would always miss
2009-04-30 06:41:37 -05:00
Slava Pestov
4ae6269185
PPC make-image fix
2009-04-30 05:59:59 -05:00
Slava Pestov
5fb5c19d61
Machine code is now stored in a byte array instead of an array for add_code_block()
2009-04-30 04:34:35 -05:00
Slava Pestov
59d6131c7c
Bum 3 instructions out of megamorphic fast path by switching to fixed-size caches
2009-04-30 04:14:14 -05:00
Slava Pestov
8c01b79d06
Fix PPC make-image
2009-04-30 04:00:44 -05:00
Slava Pestov
515c619202
Non-optimizing compiler now open-codes megamorphic dispatch fast path
2009-04-30 03:37:07 -05:00
Slava Pestov
62db617927
Get rid of two instructions from tag pics and one instruction from all others
2009-04-29 22:24:28 -05:00
Slava Pestov
5188f4e1f0
Fix TEST opcode in cpu.x86.assembler
2009-04-29 22:23:42 -05:00
Slava Pestov
bd186b6320
Eliminate 3 instructions from PIC fast path
2009-04-29 21:32:05 -05:00
Slava Pestov
38a38a57a9
Fix hi-tag-or-tuple PICs
2009-04-29 03:00:09 -05:00
Slava Pestov
9243316489
Debugging inline caching
2009-04-28 23:05:18 -05:00
Slava Pestov
c15a4c1c5a
Add new relocation type for call sites which may be replaced by ICs
2009-04-28 17:53:14 -05:00
Slava Pestov
4d10105802
Working on inline caching
2009-04-28 03:48:37 -05:00
Slava Pestov
7e84daf0f1
Move (execute) to kernel.private
2009-04-26 02:42:37 -05:00
Slava Pestov
76281235e7
bootstrap.image: clean up jit-define and define-sub-primitive so that
2009-04-25 22:35:19 -05:00
Slava Pestov
27c84e89fe
Working on faster (execute)
2009-04-25 21:14:59 -05:00
Slava Pestov
3353a777f7
Fixing some unit test failures
2009-04-22 07:05:00 -05:00
Slava Pestov
0f0218b209
Fix some compile warnings in bootstrap
2009-04-17 17:53:26 -05:00
sheeple
42d164db77
Fix C99 complex number support in FFI on Mac OS X/PPC
2009-03-30 07:19:14 -05:00
Slava Pestov
75452c842f
cpu.ppc.bootstrap: update for syntax change
2009-03-22 21:37:42 -05:00
Slava Pestov
ea60f8ae93
Changing : foo ; parsing to SYNTAX: foo ;
2009-03-21 01:27:50 -05:00
Slava Pestov
7f4c967ace
More compact relocation layout
2009-03-19 20:02:43 -05:00
Slava Pestov
bf41b187b0
Re-organize code so that with-compilation-unit can infer
...
Fix with-compilation-unit to work in deployed code
2009-03-13 19:39:32 -05:00
Doug Coleman
990513db60
use CONSTANT: in basis
2009-02-22 19:13:08 -06:00
Slava Pestov
6b25e99470
Add summary for heaps more vocabs
2009-02-16 21:05:13 -06:00
Slava Pestov
6b99b04531
Add vocab: for vocab-relative paths
2009-02-15 19:53:21 -06:00
sheeple
3c1ddde1f9
Fix complex float support on NetBSD
2009-02-12 08:10:21 -06:00
sheeple
facd455e92
Working on complex float support in FFI on NetBSD
2009-02-12 06:25:07 -06:00
Slava Pestov
44bfff7c7b
Rename ##load-indirect to ##load-reference since this is more descriptive; value numbering doesn't assign expressions to ##load-reference nodes since this would end up folding literals which were eq? but not =
2009-01-29 01:44:58 -06:00
Slava Pestov
f34c14a0f5
Remove some usages of tuck
2009-01-23 18:20:47 -06:00
Slava Pestov
34792a9f23
Remove >r/r>
2008-12-17 19:17:37 -06:00
Slava Pestov
c5160d76e9
Merge qualified, alias, symbols, constants into core
2008-12-17 18:10:01 -06:00
Slava Pestov
97fd662d61
Clean up PPC backend a bit
2008-12-16 02:03:21 -06:00
Slava Pestov
0021cde743
Fix more compile errors
2008-12-15 22:21:56 -06:00
Slava Pestov
5a45119252
Fix jit-dispatch on x86-64; was broken on windows
2008-12-15 20:55:24 -06:00
Slava Pestov
09c60f7e90
Fix some vocabularies for new requirement that inline words have a stack effect declaration
2008-12-15 20:31:55 -06:00
Slava Pestov
d821cd7281
Fix win64 bootstrap
2008-12-10 01:19:22 -06:00
Slava Pestov
4b927f732f
Clean up JIT backend a little
2008-12-09 17:14:17 -06:00
Slava Pestov
05e4626c49
Clean up
2008-12-09 03:22:09 -06:00
Slava Pestov
0359ec8eac
Fix PowerPC backend again
2008-12-06 16:57:28 -06:00
Slava Pestov
8a8f0c925c
Use BSR instruction to implement fixnum-log2 intrinsic
2008-12-06 15:31:17 -06:00
Slava Pestov
d2ce4355f8
Fixing PPC backend
2008-12-06 15:30:40 -06:00
Slava Pestov
a56d480aa6
Various optimizations leading to a 10% speedup on compiling empty EBNF parser:
...
- open-code getenv primitive
- inline tuple predicates in finalization
- faster partial dispatch
- faster built-in type predicates
- faster tuple predicates
- faster lo-tag dispatch
- compile V{ } clone and H{ } clone more efficiently
- add fixnum fast-path to =; avoid indirect branch if two fixnums not eq
- faster >alist on hashtables
2008-12-06 09:16:29 -06:00
Slava Pestov
b06cfc6225
Update ppc backend for recent string intrinsic changes
2008-12-06 00:12:07 -06:00
Slava Pestov
82cf6530c6
set-string-nth-fast intrinsic was busted
2008-12-05 23:52:09 -06:00
Slava Pestov
e256846acd
Tweak string representation; high bit indicates if character has high bits in aux vector. Avoids memory access in common case. Split set-string-nth into two primitives; set-string-nth-fast is open-coded by optimizing compiler. 13% improvement on reverse-complement
2008-12-05 06:38:51 -06:00
Slava Pestov
e5ed7447ed
Removing more >r/r> usages
2008-12-03 08:46:16 -06:00
Slava Pestov
e4db2afb7e
Update cpu.x86.assembler to use dip instead of >r/r>
2008-12-02 03:10:01 -06:00
Slava Pestov
a558f91d5d
Better command-line processing
2008-12-01 16:10:48 -06:00
Slava Pestov
3e25d14e54
Code cleanup: refactoring usages of rot and -rot to use newer idioms instead
2008-11-30 17:47:29 -06:00
Slava Pestov
f55c5d1bd0
Fix compile error
2008-11-30 11:37:39 -06:00
Slava Pestov
c7c3bbc5f5
Fix register assignments on 64-bit x86
2008-11-30 08:05:36 -06:00
sheeple
6400085bea
Fix bootstrap, add a unit test
2008-11-30 07:36:29 -06:00
sheeple
ff000f3e82
Merge branch 'master' of git://factorcode.org/git/factor
2008-11-30 07:25:37 -06:00
Slava Pestov
e7f4563374
fixnum* intrinsic for x86
2008-11-30 07:26:49 -06:00
sheeple
abc486c342
Subtraction overflow was wrong way round on PowerPC
2008-11-30 06:08:16 -06:00
sheeple
26c002d23f
Fix fixnum* problem; result was shifted to the right by 3 bits if both input registers were equal
2008-11-29 00:44:46 -06:00
U-SLAVA-DFB8FF805\Slava
6f0ec04310
Fix stack effect of param-reg-[12] on x86.3C2
2008-11-24 19:09:55 -06:00
Slava Pestov
9081247e34
Merge branch 'master' of git://factorcode.org/git/factor into faster_overflow_checks
2008-11-28 22:26:49 -06:00
sheeple
2b1a90e90a
Fixing PowerPC arithmetic primitives
2008-11-28 22:22:26 -06:00
Slava Pestov
bac609d7af
Implement both-fixnums? sub-primitive for PowerPC
2008-11-28 21:18:42 -06:00
Slava Pestov
68dd6cc35a
Working on PowerPC overflow checks
2008-11-28 20:02:50 -06:00
Slava Pestov
eb8c621b6f
Faster generic arithmetic on fiixnums: both-fixnums? sub-primitive performs a check if the top two stack items are both fixnums with a single conditional branch
2008-11-28 08:35:02 -06:00
Slava Pestov
f44506089d
More work on overflow instructions: don't need temp register anymore, add -tail variants which don't need stack frame
2008-11-28 06:36:30 -06:00
Slava Pestov
5634becda1
##fixnum-add, ##fixnum-sub instructions open-code overflow check
2008-11-28 05:33:58 -06:00
Slava Pestov
6dfce7d4e7
load-locals is a primitive now, change semantics of get-locals to bum out 2 instructions from the sub-primitive
2008-11-27 22:30:29 -06:00
Slava Pestov
12d4f684ec
Fix <long>, <ulong>, *long, *ulong on win64
2008-11-24 16:28:56 -06:00
Slava Pestov
e62a558cf4
Merge branch 'master' of git://factorcode.org/git/factor
2008-11-24 12:01:55 -06:00
Slava Pestov
d849287779
Fix fixnum/i-fast and fixnum/md-fast on PowerPC
2008-11-24 12:01:08 -06:00
sheeple
6c568d5c3d
Fix PowerPC bootstrap
2008-11-24 11:34:18 -06:00
Slava Pestov
ab689c098b
Clean up direct literal code and make a first attempt at PowerPC support
2008-11-24 08:16:14 -06:00
Slava Pestov
2aaf860f47
Experimental optimizations
2008-11-24 06:40:51 -06:00
Slava Pestov
dbf52c6176
Fix PowerPC bootstrap
2008-11-24 01:45:36 -06:00
Slava Pestov
87bc7d8c8b
Update PPC non-optimizing compiler backend
2008-11-24 00:29:34 -06:00
Slava Pestov
d86524f4bc
Non-optimizing compiler now compiles dip, 2dip, 3dip, if, with direct branches instead of indirect branches. 8% bootstrap time improvement on Core Duo 2
2008-11-24 00:23:17 -06:00
Slava Pestov
60964487e0
Fix PowerPC dip/2dip/3dip
2008-11-23 04:14:17 -06:00
Slava Pestov
616df5da22
PowerPC dip/2dip/3dip JIT intrinsics (untested)
2008-11-23 03:04:45 -06:00
Slava Pestov
a4d9cdfeb3
Refactor all usages of >r/r> in core to use dip, 2dip, 3dip
...
Non-optimizing compiler now special-cases dip, 2dip, 3dip following a
literal quotation: this allows us to break the dip/slip meta-circle
without explicit calls to >r/r>
2008-11-23 02:44:56 -06:00
Slava Pestov
303b3f2f83
Fix compile error in x86 bootstrap
2008-11-23 00:09:23 -06:00
Slava Pestov
d5559d4132
Add fixnum/mod and fixnum/i subprimitives on PowerPC
2008-11-21 02:24:37 -06:00
Slava Pestov
ae4f9a2809
Add fixnum/mod-fast and fixnum/i-fast subprimitives
2008-11-21 02:11:36 -06:00
unknown
ccd13ce975
Define intptr_t type
2008-11-17 18:42:10 -06:00
Slava Pestov
20f5541d35
Refactoring FFI for Win64
2008-11-17 13:34:37 -06:00
Slava Pestov
eef45a1cc3
Tweak PowerPC %dispatch
2008-11-13 05:58:49 -06:00
Slava Pestov
a14e1ebcb5
Fix PowerPC bootstrap
2008-11-13 05:55:34 -06:00
Slava Pestov
eb05dd3a12
Optimize a ##dispatch that is applied to the result of a ##sub-imm or ##add-imm; this eliminates an instruction from the common 1 fixnum-fast { ... } dispatch and 8 fixnum-fast { ... } dispatch code sequences appearing in generic word expansions
2008-11-13 04:16:08 -06:00
Slava Pestov
029ee67525
Fix ppc make-image
2008-11-13 04:12:09 -06:00
Slava Pestov
cfa82cb474
New calling convention for VM primitives:
...
instead of the Factor side passing the stack pointer as the first parameter, and having the VM save it to stack_chain->top, we instead have the Factor side save it. Eliminates a lot of crud in the VM
2008-11-13 03:20:34 -06:00
sheeple
ffe4bd6787
Various updates
2008-11-10 03:18:58 -06:00