Commit Graph

74 Commits (d689be57a515e24ecb2134ee5e2f7b79e74c74a9)

Author SHA1 Message Date
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
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 8610fa5e48 cpu: cleanups 2009-09-25 21:47:05 -05: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
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 9d90bdd439 Fix conflict 2009-09-20 23:18:07 -05:00
Slava Pestov acea55c692 math.vectors: add v+- word which is accelerated by SSE3 2009-09-20 17:43:16 -05:00
Phil Dawes 4af25578d8 fixed up some alien boxing (x86 32 & 64) 2009-09-16 08:20:50 +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 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
Doug Coleman 740a175e56 duplicate using 2009-09-08 17:02:31 -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
Slava Pestov 906a0d212a Detect SSE version and enable the correct set of SIMD intrinsics 2009-09-03 03:28:38 -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
Slava Pestov 0df8aadce2 cpu.x86: use SQRTSD instruction for math.libm:fsqrt word 2009-08-25 23:22:15 -05:00
Slava Pestov 1afd001393 basis/cpu: eliminate some usages of rot 2009-08-25 19:38:48 -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 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 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 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 49f670be05 Fix 32-bit bootstrap 2009-06-03 03:23:55 -05:00
Slava Pestov 9e987e8642 Merge branch 'master' into global_optimization 2009-06-01 03:12:32 -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
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 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 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
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 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 a558f91d5d Better command-line processing 2008-12-01 16:10:48 -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 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 ab689c098b Clean up direct literal code and make a first attempt at PowerPC support 2008-11-24 08:16:14 -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