Commit Graph

273 Commits (2c67a5cd78e5dcffd7146e6fd0eb95f810a497e1)

Author SHA1 Message Date
Slava Pestov e343b46479 cpu.ppc: update for %unary/binary-float-function change 2009-09-28 16:40:52 -05:00
Phil Dawes 6f0d25a8b3 ppc asm to pass vm pointer: initial bootstrap 2009-09-28 07:48:37 +01:00
Slava Pestov e8cfaccef0 compiler.cfg: nuke ##bignum>integer and ##integer>bignum since they were unused 2009-09-27 20:36:05 -05:00
Slava Pestov 6dd8e4657e Merge branch 'master' into more_aggressive_coalescing 2009-09-27 19:29:50 -05:00
Slava Pestov 6f2a4eba51 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 a267100781 compiler.cfg.ssa.destruction: more aggressive coalescing work in progress 2009-09-27 17:17:26 -05:00
sheeple 24b27f4c42 Fixing PPC backend for ##slot change 2009-09-26 13:21:42 -05:00
sheeple 2b35f52ed2 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 01082d743d An attempt at porting the slot change to PPC 2009-09-26 02:58:18 -05:00
Slava Pestov 2e1be3f513 cpu: cleanups 2009-09-25 21:47:05 -05:00
Phil Dawes 5b404aae7e 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 f9e736c1f0 isolated %vm-invoke-blah-arg crap to 64.factor 2009-09-25 19:02:41 +01:00
Slava Pestov a562722c4c cpu.ppc: add representation hooks for shifts 2009-09-24 13:00:12 -05:00
Slava Pestov a702bfa215 cpu.ppc: fix compile errors 2009-09-24 03:55:01 -05:00
Slava Pestov a345c26a14 cpu.ppc: make it load 2009-09-24 00:13:27 -05:00
Slava Pestov 7c4632d2b9 cpu.ppc: fix typos 2009-09-23 23:38:17 -05:00
Slava Pestov 3581d0b09b 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 5854fa0c03 cpu.ppc: add dummy vector ops 2009-09-23 20:31:12 -05:00
Slava Pestov 9b26bd059d cpu.ppc: fix load errors 2009-09-22 05:24:34 -05:00
Slava Pestov fc5fe2bd2a Merge Phil Dawes' VM work 2009-09-20 03:48:08 -05:00
Joe Groff 4a1422e7fe 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 db2eba9b58 disambiguate math:float in cpu.ppc 2009-09-17 19:10:40 -05:00
Phil Dawes f5e6d43e1e 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 2a1a4ccf27 fixed up getenv compiler intrinsic to use vm struct userenv 2009-09-16 08:16:32 +01:00
Phil Dawes cb3df86491 moved cards_offset and decks_offset into vm struct (for x86) 2009-09-16 08:16:31 +01:00
Phil Dawes fd72e140d2 nursery global variable moved into vm 2009-09-16 08:16:31 +01:00
Phil Dawes 6da959ff3b renamed to vm-field-offset. Slava's better at naming than me 2009-09-16 08:16:31 +01:00
sheeple 3602f86ab1 ppc asm to get stack_chain using vm ptr 2009-09-16 08:16:31 +01:00
Joe Groff e5145b5a48 convert compiler cpu backends to use c-type words 2009-09-15 16:08:42 -05:00
Slava Pestov 680e6424bc cpu.ppc: fix %single>double-float and %double>single-float 2009-09-10 13:04:58 -05:00
Joe Groff 54b8f04433 altivec instructions for powerpc assembler 2009-09-09 17:14:36 -05:00
Slava Pestov 9f33d7e0fa cpu.ppc: fix bootstrap 2009-09-08 23:53:51 -05:00
Joe Groff fe015ce2f0 no really, update ppc for argument order changes 2009-09-08 22:21:00 -05:00
Joe Groff b71f50ee04 Merge branch 'master' of git://factorcode.org/git/factor 2009-09-08 21:58:25 -05:00
Joe Groff b64b4a5cd9 update cpu.ppc for argument order changes 2009-09-08 21:58:11 -05:00
Slava Pestov 020e3b5713 Merge branch 'master' of git://factorcode.org/git/factor 2009-09-08 21:51:21 -05:00
Slava Pestov 092b31910d 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 f4e574383c typos in cpu.ppc 2009-09-08 21:44:11 -05:00
Joe Groff 025a5b7b15 split unordered and ordered float comparison intrinsics in compiler; generate only unordered comparisons for now 2009-09-08 17:04:26 -05:00
Slava Pestov 17821626c3 Fix conflicts 2009-09-07 23:51:25 -05:00
Slava Pestov 09c8175919 fix some typos in cpu.ppc 2009-09-04 11:18:41 -05:00
Slava Pestov 7f0ab1dc1e Merge branch 'master' of git://factorcode.org/git/factor into ppc-float-compare 2009-09-04 10:58:50 -05:00
Joe Groff e36700feb0 update powerpc compiler to generate correct float comparisons 2009-09-04 10:51:12 -05:00
Slava Pestov 7571d50bd3 cpu.ppc: fix typo 2009-09-04 06:41:33 -05:00
Joe Groff b1ba82c84f convert comparison branch code in compiler to use locals 2009-09-03 21:19:39 -05:00
Slava Pestov 20dfbf7ac8 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 0b9e5c034a 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 775b9af2f7 compiler: eliminate boilerplate by centralizing info in declarative INSN: syntax 2009-09-02 06:22:37 -05:00
Slava Pestov 14a063dd92 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 e659203907 cpu.ppc: fix %box-displaced-alien 2009-08-30 20:56:04 -05:00
Slava Pestov b35a01879e %box-displaced-alien: fix clobberage found by Doug 2009-08-30 05:11:08 -05:00
sheeple 8970cbc961 cpu.ppc: fix ##box-displaced-alien 2009-08-27 04:43:45 -05:00
Slava Pestov 9caf3f9248 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 e44b2eb875 cpu.ppc.assembler: LOAD32 assembler macro was busted 2009-08-25 22:37:10 -05:00
Slava Pestov 9805dde418 basis/cpu: eliminate some usages of rot 2009-08-25 19:38:48 -05:00
Slava Pestov e9818be8ae cpu.ppc.assembler: fix FMR and FMR. opcodes 2009-08-25 19:33:35 -05:00
sheeple 90b3921b31 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 1b8636bad5 Merge branch 'master' of git://factorcode.org/git/factor 2009-08-21 18:48:44 -05:00
Slava Pestov b1a12f85e4 cpu.ppc: work in progress 2009-08-21 18:48:34 -05:00
Doug Coleman d1ce837569 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 4d2160799f Split off the notion of a register representation from a register class 2009-08-07 17:44:50 -05:00
Slava Pestov 203a64f236 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 0e59d29282 cpu.ppc: fix small typos 2009-07-31 17:57:15 -05:00
Slava Pestov e32477fd59 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 0d265fe016 Remove %dispatch-label since its tehe same on all platforms; fix %gc on PowerPC 2009-06-07 21:46:28 -05:00
Slava Pestov 40949800bf 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 514956537f Fix cpu.ppc for strict vocabulary search path semantics 2009-05-16 08:58:10 -05:00
Slava Pestov ba04d5af1e Update documentation for stricter vocabulary search path semantics 2009-05-16 00:29:21 -05:00
Slava Pestov 3e7269731b cpu.ppc: really fix bool type 2009-05-10 19:10:20 -05:00
Slava Pestov 9b491d1442 Fix bool type on PowerPC 2009-05-10 19:01:38 -05:00
Slava Pestov 931db821d1 Merge branch 'master' of git://factorcode.org/git/factor 2009-05-07 23:26:37 -05:00
Slava Pestov e007cb56e8 cpu.ppc: fix alien-indirect 2009-05-07 23:26:33 -05:00
Slava Pestov 5e35f19312 cpu.ppc: bools are 4 bytes on OS X/PowerPC 2009-05-07 23:18:41 -05:00
Slava Pestov cb9d50887c 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 e78c043acb Merge branch 'master' of git://factorcode.org/git/factor 2009-05-07 19:41:54 -05:00
Slava Pestov b45284421d cpu.ppc.bootstrap: updates 2009-05-07 19:40:25 -05:00
Slava Pestov 9b419aa0b1 Count megamorphic cache hits 2009-05-07 14:26:08 -05:00
Slava Pestov c1e25f3b43 JIT now supports multiple relocations per code template. This simplifies non-optimizing compiler backends 2009-05-06 20:04:49 -05:00
Slava Pestov d3b85c14c9 Working on inline caching for tail call sites 2009-05-06 19:22:22 -05:00
Slava Pestov 478d29a175 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 fdb87205d4 Merge branch 'master' of git://factorcode.org/git/factor 2009-05-06 15:34:48 -05:00
Slava Pestov 5e90662337 Working on PowerPC backend 2009-05-06 15:39:03 -05:00
Slava Pestov ddf05d82ce cpu.ppc.bootstrap: working on polymorphic inline caching for PowerPC 2009-05-06 15:30:52 -05:00
Slava Pestov 9e34307f58 cpu.ppc.assembler: update for code_format=1 2009-05-05 20:56:36 -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 4ae6269185 PPC make-image fix 2009-04-30 05:59:59 -05:00
Slava Pestov 8c01b79d06 Fix PPC make-image 2009-04-30 04:00:44 -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 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 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
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 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 97fd662d61 Clean up PPC backend a bit 2008-12-16 02:03:21 -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 0359ec8eac Fix PowerPC backend again 2008-12-06 16:57:28 -06:00
Slava Pestov d2ce4355f8 Fixing PPC backend 2008-12-06 15:30:40 -06:00
Slava Pestov b06cfc6225 Update ppc backend for recent string intrinsic changes 2008-12-06 00:12:07 -06:00
Slava Pestov f55c5d1bd0 Fix compile error 2008-11-30 11:37:39 -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
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 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 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 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 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 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
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
unknown 7a6a280b5c Fix conflict 2008-11-08 21:41:33 -06:00
unknown f7fe84e563 Working on Win64 FFI 2008-11-08 21:40:47 -06:00
Slava Pestov 65dea0aa26 PowerPC backend fixes 2008-11-08 20:36:14 -06:00
Slava Pestov 639da2d335 Refactor OS-specific parts of PowerPC backend 2008-11-07 20:45:25 -06:00
sheeple d1f248dac6 Fixing PowerPC backend: prolog register clobberage, spilling, and general stack frame usage. Add some lame tests for spilling 2008-11-06 19:00:56 -06:00
sheeple d2ec46e38f PowerPC backend almost functional; some new compiler unit tests added,
better compilation of 'f eq?'; f becomes an immediate operand
move aux-offset to compiler.constants
2008-11-06 06:27:27 -06:00
Slava Pestov 7741096bff Tweak PPC register usage; gcc doesn't like it when you mess with r31 for some reason 2008-11-06 03:36:46 -06:00
Slava Pestov 2239f4fb99 More work on PowerPC backend; change register usage, free up some more integer and float regs (untested) 2008-11-05 04:20:35 -06:00
Slava Pestov 10d3b4a55d New PPC backend (untested) 2008-11-05 00:31:08 -06:00
Slava Pestov d8345b5eda Update PPC non-optimizing compiler backend: there are three new sub-primitives to support 2008-11-04 06:07:19 -06:00
Slava Pestov 75e9708488 Oops 2008-11-03 06:50:59 -06:00
Slava Pestov e6f6cd5d93 Fix USING: -- you can now make ppc images, they just don't work yet 2008-11-03 06:40:14 -06:00
Slava Pestov f092622fac CFG IR is now pure SSA 2008-10-20 01:56:28 -05:00
Slava Pestov ae3c4ae1b6 Fix some problems with callbacks 2008-10-12 23:32:14 -05:00