Commit Graph

1456 Commits (acac6b0a1d926cc74ac4b49d8b19862c413bd404)

Author SHA1 Message Date
Slava Pestov 83a2de6565 Fix ffi-test library to work with Windows SDK. Turns out MINGW has a different ABI for struct returns than MS's compiler; make the MS ABI the default for cdecl on Windows, and add mingw ABI for libraries that use the MINGW ABI 2010-02-02 04:01:12 -06:00
Slava Pestov eec325b4a6 compiler.crossref: clean up and fix bug with forgotten classes 2010-02-01 17:20:08 +13:00
Slava Pestov 7f664a6387 Fix a couple of unit tests that were relying on the old compiler crossref structures 2010-01-31 23:26:55 +13:00
Slava Pestov 8a8c47ab1d compiler.cfg.intrinsics.simd: ignore dummy assert-positive word 2010-01-31 18:19:14 +13:00
Slava Pestov 8f763fe8da Merge git://github.com/littledan/Factor into littledan 2010-01-31 02:54:58 +13:00
Slava Pestov 8e2e869ec5 stack-checker.dependencies: make conditional dependencies more robust 2010-01-31 01:55:35 +13:00
Slava Pestov 5753d76c98 compiler.crossref: word props were stored the wrong way round 2010-01-30 22:33:27 +13:00
Slava Pestov 351c68094c compiler.crossref: cleanup 2010-01-30 21:14:40 +13:00
Slava Pestov 93c2428cf4 compiler.crossref: more space-efficient storage of dependency information 2010-01-30 09:29:02 +13:00
Slava Pestov 39aa70aa88 Clean up some code in preparation for a refactoring 2010-01-30 09:29:02 +13:00
Slava Pestov 9b49424070 compiler.crossref: memoize dependency evaluation 2010-01-30 09:29:01 +13:00
Slava Pestov 21abe46414 compiler.crosssref: rename word property 2010-01-30 09:29:00 +13:00
Slava Pestov 65ba4b58d9 stack-checker.dependencies: add tuple layout dependencies for use by 'new' and 'boa' 2010-01-30 09:29:00 +13:00
Slava Pestov df16224ab2 Re-work flushed dependencies into new compiler cross-referencing framework 2010-01-30 09:29:00 +13:00
Slava Pestov 13f920babb Add some utility words to stack-checker.dependencies in preparation for a refactoring 2010-01-30 09:28:59 +13:00
Slava Pestov 468a3a74f1 Re-defining a tuple class now invalidates cached quotation stack effects 2010-01-30 09:28:59 +13:00
Slava Pestov 2138b55708 New 'conditional dependency' mechanism for more accurate recording of recompilation information 2010-01-30 09:28:57 +13:00
Slava Pestov dba5b0be08 compiler.tree.propagation.call-effect: clear out dependency tracking variables to ensure that infer calls made by call( as part of the compile process doesn't pollute the dependencies of the word being compiled 2010-01-30 09:28:57 +13:00
Slava Pestov 1da446d8fc Code cleanups 2010-01-30 09:28:56 +13:00
Slava Pestov 0738e85df1 Work in progress: record constant-folds of predicate words, and call-next-method invocations, in the same way that method inlining are recorded, for greater recompilation accuracy 2010-01-30 09:28:56 +13:00
Slava Pestov 9d207cc913 Fix regression when forgetting classes 2010-01-30 09:28:55 +13:00
Slava Pestov ed7f8341e5 More changes so that mixins trigger even less recompilation 2010-01-30 09:28:53 +13:00
Slava Pestov 0a77399242 Add test case for mixin bug Doug found, seems to be fixed now 2010-01-30 09:28:52 +13:00
Daniel Ehrenberg 8f4bd0e7df Merge branch 'master' of git://factorcode.org/git/factor 2010-01-26 14:14:05 -06:00
Daniel Ehrenberg 8837fe5792 Tests for propagation additions; making fixnum-bit? inline 2010-01-25 20:15:17 -06:00
Doug Coleman 7322c0a400 remove a stray character 2010-01-22 15:07:01 -06:00
Doug Coleman 8ae200d419 Rename accumulator to collector, pusher to selector 2010-01-22 15:00:53 -06:00
Slava Pestov cf21edd415 compiler: fix docs 2010-01-23 00:46:04 +13:00
Slava Pestov 81967cab35 compiler.test: fix 2010-01-23 00:40:56 +13:00
Slava Pestov 0cbf9c9b50 Move compile-call and related words only meant to be used for debugging to compiler.test 2010-01-23 00:39:56 +13:00
Daniel Ehrenberg 8b04f0f417 Merge branch 'master' of git://factorcode.org/git/factor
Conflicts:

	basis/compiler/tree/propagation/transforms/transforms.factor
2010-01-20 00:15:55 -06:00
Daniel Ehrenberg 2e5f16da00 Adding compiler transforms in propagation 2010-01-20 00:10:49 -06:00
Slava Pestov 875053d645 compiler.tree.propagation.call-effect: eliminate some dispatch from call( expansion 2010-01-19 21:08:45 +13:00
Slava Pestov 88004434ec vm: remove primitive table, non-optimizing compiler now looks up primitives with dlsym() 2010-01-19 20:00:33 +13:00
Slava Pestov e19c6fd76f compiler.tree.escape-analysis: make tests a bit more robust; a change to boa constructors recently meant dead curries were showing up on certain expansions, this was throwing off the escape-analysis test's unboxed allocation counting. Fix this by having the test run DCE first, and remove a few tests that no longer make sense now 2010-01-18 23:32:34 +13:00
Slava Pestov 0165daf56c Stop wearing monocle and use the term "entry point" instead of "XT" throughout VM and compiler; also remove two unused relocation types 2010-01-18 20:54:00 +13:00
Slava Pestov 4bf62e6b41 compiler.tree.propagation: ensure that we don't call 'equal?' or 'hashcode' on literals in words being compiled 2010-01-16 20:00:48 +13:00
Slava Pestov ce05955693 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
Doug Coleman 7521807b55 random is generic now -- iota random -> random 2010-01-14 12:48:57 -06:00
Slava Pestov 880fb747fc Removing integers-as-sequences 2010-01-15 07:15:33 +13:00
Slava Pestov 5770a5f9b3 Fix input-classes of /i and mod, and add some regression tests with various reductions of the original test-case from the terrain demo 2010-01-14 18:15:51 +13:00
Slava Pestov 1c9afb4ccf compiler.codegen.fixup: cache symbol names, reducing image size by ~200Kb 2010-01-13 23:18:43 +13:00
Slava Pestov 005db61ad6 Rework min and max so that behavior with floats and NaNs is consistent between generic arithmetic and open-coded float intrinsics 2010-01-13 22:20:16 +13:00
Slava Pestov 790674cf89 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 5ef9fb5473 More PowerPC non-optimizing compiler backend fixes 2010-01-13 03:09:43 +13:00
Slava Pestov 1e2c0327ee 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 1e137b6d6a compiler.tree: remove some code duplication concerning #alien nodes 2010-01-07 16:06:07 +13:00
Slava Pestov a9f90026df Update x86-32 for assembly entry point changes 2010-01-06 17:55:20 +13:00
Slava Pestov d2baa6dde5 vm: move c_to_factor, lazy_jit_compile_impl, throw_impl, set_callstack assembly routines into non-optimizing compiler for x86-64 2010-01-06 15:47:36 +13:00
Slava Pestov 9399a68786 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 8f449f1a82 Get optimizing compiler working without global register variables in VM 2009-12-22 15:42:49 +13:00
Slava Pestov 31a260b74c 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 1ad9dc14b4 fix simd tests 2009-12-05 17:17:16 -08:00
Joe Groff d674ff8191 simd intrinsic implementation for v*high, v*hs+, vavg, and vsad 2009-12-05 14:52:18 -08:00
Joe Groff 778c21e94c 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 4116e2aa4e 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
Slava Pestov 3dee027879 Merge branch 'simd-cleanup' of git://factorcode.org/git/factor into simd-cleanup 2009-12-02 19:09:56 -05:00
Slava Pestov daf47a539c RT_HERE now takes its argument from the literal table rather than the parameter table, reducing image size further 2009-12-02 04:55:48 -06:00
Slava Pestov 912b1265fc Split literal table into literal and parameter tables, literal table is discarded after code block initialization 2009-12-02 04:28:15 -06:00
Joe Groff ebcaaa0d64 Merge branch 'master' into simd-cleanup 2009-11-26 16:14:46 -08:00
Joe Groff ea7c5b6d86 fix buggy simd intrinsics 2009-11-26 13:28:40 -08:00
Joe Groff dcc9e6cbf3 don't try to rewrite redundant test-vector-exprs 2009-11-25 20:06:11 -08:00
Slava Pestov a684164783 Fix non-tail recursive inline recursive compilation 2009-11-25 19:12:09 -06:00
Joe Groff 8095704010 change name of 'unsign-rep' to more sensible 'signed-rep' 2009-11-24 22:44:12 -08:00
Joe Groff 90cd1b47f7 make math.vectors.simd tests pass again 2009-11-24 18:30:12 -08:00
Joe Groff 5aebf7ffba update compiler.cfg.intrinsics.simd tests 2009-11-24 12:50:27 -08:00
Joe Groff 804c8c3bcc fix simd intrinsic compilation 2009-11-24 11:37:28 -08:00
Joe Groff faf4df9043 scalar fallbacks for simd intrinsics 2009-11-23 21:24:55 -08:00
Slava Pestov 08b6ebc7fa Factor source files should not be executable 2009-11-21 17:50:43 -06:00
Joe Groff 3b17573c7c 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 4700890b70 fix primitive emit fallback for simd intrinsics 2009-11-18 21:29:51 -08:00
Joe Groff b54a925d1e enable simd intrinsics and fix first-pass compiler errors 2009-11-18 20:32:05 -08:00
Joe Groff e6295d5640 tests for all simd intrinsics 2009-11-18 18:20:58 -08:00
Joe Groff 3698595d39 properly handle -vector-op and case words in simd.backend 2009-11-18 12:36:41 -08:00
Joe Groff 132ce61bb5 start on tests for simd intrinsics 2009-11-17 11:13:16 -08:00
Slava Pestov 43c1ae0a44 compiler.cfg: 'basic-block new hashcode' should not throw an exception; fixes tools.deploy.test.11 2009-11-16 02:01:36 -06:00
Slava Pestov 6d0598a385 heap-size now has a partial-eval instead of being foldable, and the partial-eval adds a dependency on the C type word. Fixes problem where redefining a struct didn't update specialized array 2009-11-15 11:26:37 -06:00
Joe Groff 00b9506439 compilation fixes 2009-11-14 23:43:22 -06:00
Joe Groff 993631e44c 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 9efff4a322 backend fixups 2009-11-14 20:59:03 -06:00
Slava Pestov aaad7b6b16 compiler.tree.propagation.branches: fix recent constraints change 2009-11-13 07:16:41 -06:00
Slava Pestov b201cc4a6f Fixing call( inline caching 2009-11-13 04:32:33 -06:00
Slava Pestov eb165a5450 Instead of bumping the definition counter every time in the VM, bump it only if stack effects changed or macros were redefined 2009-11-13 03:52:14 -06:00
Slava Pestov 6c7ce97380 compiler.tree.propagation: fix bug in constraints that caused retain stack overflow 2009-11-13 03:22:57 -06:00
Slava Pestov a841083ebe compiler.tree.propagation.transforms: inline push if types are known. Speeds up reverse-complement, sort, sum-file benchmarks 2009-11-12 17:24:32 -06:00
Slava Pestov 2e861d2ff8 compiler.tree.propagation: implementing missing case in branch constraints 2009-11-12 17:24:11 -06:00
Slava Pestov 06fb247b8c Invalidate inline caches used by call( and execute( when words are redefined 2009-11-12 16:09:07 -06:00
Joe Groff db1ae26801 sever lingering dependencies on simd from compiler 2009-11-11 16:08:40 -06:00
Slava Pestov 3b75114015 Fixing test failures 2009-11-11 02:40:24 -06:00
Slava Pestov 68f3087c1c Faster identity-hashcode primitive; fast path now opencoded by the compiler 2009-11-11 02:27:19 -06:00
Joe Groff d52d56f335 backend for choosing available SIMD intrinsic implementations 2009-11-10 23:35:46 -06:00
Slava Pestov 4168ffbcee New identity-hashcode primitive 2009-11-10 21:18:54 -06:00
Slava Pestov b4d997d17a compiler.cfg.intrinsics.slots: new implementation of value-tag 2009-11-10 17:30:27 -06:00
Slava Pestov e0d3878c00 stack-checker: tighten some screws in error reporting 2009-11-09 00:17:24 -06:00
Joe Groff 96060c32e9 Merge branch 'master' into simd-cleanup 2009-11-08 21:54:53 -06:00
Slava Pestov 8f9d4e3d2c stack-checker: split off stack-checker.dependencies from stack-checker.state 2009-11-08 20:34:46 -06:00
Slava Pestov c00b1df581 compiler.crossref: fix bugs 2009-11-08 06:22:39 -06:00
Slava Pestov 5dc20ef385 Use a more compact representation for "compiled-uses" and "compiled-generic-uses" word-props; reduces image size 2009-11-08 06:08:04 -06:00
Joe Groff b09b0f0686 Merge branch 'master' into simd-cleanup 2009-11-07 22:26:09 -06:00
Slava Pestov 0731485d86 compiler: fix alien tests 2009-11-06 01:04:02 -06:00
Joe Groff f780bbddc3 deprimitivize tuck and put it to pasture 2009-11-05 22:47:05 -06:00
Daniel Ehrenberg d860a2febb custom inlining for diff and intersect, when given a literal sequence. this cuts off 1/3 of the running time of a microbenchmark 2009-11-05 13:13:27 -06:00
Joe Groff a279b360eb Merge branch 'master' into simd-cleanup
Conflicts:
	basis/math/vectors/simd/functor/functor.factor
2009-11-05 11:27:08 -06:00
Joe Groff cf28782533 more intrinsic madness 2009-11-05 09:52:57 -06:00
Slava Pestov 3d392cbc2c compiler: fix intrinsics tests on 32-bit 2009-11-04 18:28:46 -06:00
Joe Groff 54e9baa7e4 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 4b31c10830 compiler.cfg.intrinsics.allot: fix inline byte array allocation on 32-bit platforms 2009-11-03 23:44:20 -06:00
Slava Pestov d0a784d61c compiler: update unit tests for 4-bit tag change 2009-11-03 21:40:29 -06:00
Joe Groff e12c708797 new intrinsic generators, pt1 2009-11-03 21:38:45 -06:00
Slava Pestov f102bd7ded cpu.x86: update %box-displaced-alien for introduction of address field 2009-11-03 03:17:43 -06:00
Slava Pestov bc45ceb05b Merge branch 'master' into new_gc 2009-11-02 20:34:13 -06:00
Slava Pestov 6b1f651208 compiler.cfg.intrinsics: uncomment line commented out by mistake 2009-11-02 20:33:14 -06:00
Slava Pestov f1479e800b Merge branch 'master' into new_gc 2009-11-02 20:11:43 -06:00
Slava Pestov bb202805d8 compiler.cfg: don't generate useless methods in instruction meta-programming. reduces bootstrap time 2009-11-02 20:11:29 -06:00
Slava Pestov 6299c42564 Minor bug fixes for 4-bit tags 2009-11-02 17:41:36 -06:00
Joe Groff 9ac1cec6c4 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
Joe Groff 6cf6252753 update compiler.tree.propagation.simd, and don't load it till math.vectors.simd is loaded 2009-11-02 15:09:16 -06:00
Slava Pestov d65296b334 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 5da0b1a22e Merge branch 'master' into new_gc 2009-10-30 21:04:37 -05:00
Joe Groff eecef661cf exile roll and -roll to basis/shuffle and mark them deprecated 2009-10-30 17:11:45 -05:00
Slava Pestov 051dcb6849 Merge branch 'master' into new_gc 2009-10-30 03:03:05 -05:00
Joe Groff 11dd8720f4 Merge branch 'master' of git://factorcode.org/git/factor 2009-10-30 00:42:37 -05:00
Joe Groff ca8d4c15f4 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 1ee8c8f5eb sigma -> map-sum 2009-10-29 14:34:04 -05:00
Doug Coleman ff14283c2d Merge branch 'master' of git://factorcode.org/git/factor 2009-10-28 17:26:23 -05:00
Doug Coleman 9ff38fb56c (normalize-path) -> absolute-path, canonicalize-path -> resolve-symlinks 2009-10-28 17:25:50 -05:00
Joe Groff c6761710a6 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 22a9be5ea5 update existing code to use :> ( ) when possible 2009-10-28 16:11:33 -05:00
Doug Coleman b5fd809209 memq? -> member-eq?, sorted-memq? -> sorted-member-eq? 2009-10-28 15:02:00 -05:00
Doug Coleman 82992f6dd4 reverse-here -> reverse! 2009-10-28 14:40:15 -05:00
Doug Coleman a57e990af7 parsed -> suffix!, add append! 2009-10-28 13:38:27 -05:00
Joe Groff 33f373162d fix load errors from bootstrapping 2009-10-28 12:51:03 -05:00
Slava Pestov ba37429563 filter-here -> filter! 2009-10-28 00:44:05 -05:00
Slava Pestov 03e70d1aa9 remq -> remove-eq, delq -> remove-eq! 2009-10-28 00:23:08 -05:00
Slava Pestov b8a51c7eb0 delete-nth -> remove-nth! 2009-10-27 23:41:57 -05:00
Slava Pestov 34d3d4962a change-each -> map!, deep-change-each -> deep-map! 2009-10-27 22:32:56 -05:00
Joe Groff 8b6665c57e update existing code for [let change 2009-10-27 22:05:37 -05:00
Joe Groff 9ea0ce5c40 update compiler.tree.cleanup test 2009-10-26 23:01:35 -05:00
Slava Pestov 8715b67644 Merge branch 'master' into new_gc 2009-10-24 01:31:15 -05:00
Slava Pestov 496d8a990e compiler.tree.propagation: fix broken corner cases in bitand and shift transforms, exposed by Hugh Aguilar's LC53 benchmark 2009-10-24 01:09:32 -05:00
Slava Pestov 47d6507548 compiler.tree.propagation.transforms: fix problem with 'shift' transform when input was a bignum 2009-10-23 07:50:56 -05:00
Slava Pestov 322510525d Merge branch 'master' into new_gc 2009-10-23 03:56:46 -05:00
Slava Pestov 5681f67101 compiler: fix stack effect inference bug discovered by x6j8x; it was possible to define a word which did not compile but could be called anyway 2009-10-23 03:27:25 -05:00
Slava Pestov b78202e816 Merge branch 'master' into new_gc 2009-10-22 05:40:57 -05:00
Joe Groff cee5862b69 update a bunch of alien-callbacks and alien-indirects to use c-type words 2009-10-21 21:10:11 -05:00
Joe Groff 4dd44a007a update some naked alien-invokes to use c-type words 2009-10-21 18:44:00 -05:00
Joe Groff a2976083be generate unsigned vector comparison fallbacks using min/max or xor/signed compare 2009-10-20 22:30:57 -05:00
Joe Groff a0a816e88a generate better fallback code for vmin/vmax intrinsics 2009-10-20 19:22:38 -05:00
Joe Groff d570e58374 Merge branch 'master' of git://factorcode.org/git/factor 2009-10-20 17:42:29 -05:00
Joe Groff 218d5c7c07 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 f442d1949b Change data heap alignment to 16 bytes 2009-10-20 12:45:00 -05:00
Slava Pestov a71212f9c4 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 9599d86ec5 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 16db1a394b compiler, cpu.x86.32: clean up FFI implementation, in particular 32-bit x86-specific backend 2009-10-20 04:15:10 -05:00
Slava Pestov 73a3fe447a compiler: fix typo in intrinsics tests 2009-10-19 05:16:04 -05:00
Slava Pestov a62d38bff3 compiler: fix low-level-ir test on PowerPC 2009-10-19 05:03:02 -05:00
Slava Pestov 0a3029d9f2 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 bff46b80a8 fix unsigned vector unpack 2009-10-16 14:25:33 -05:00
Slava Pestov 030d035e94 vm: code heap compaction at runtime using compact-gc primitive 2009-10-16 11:39:35 -05:00
Slava Pestov ee8a112c44 compiler.cfg: fix unit tests 2009-10-15 06:01:46 -05:00
Slava Pestov 22e79e8495 compiler: tweak ##write-barrier-imm 2009-10-15 02:40:23 -05:00
Slava Pestov bfd1f0d6d2 vm: rt-vm relocation now supports accessing a field directly 2009-10-14 19:24:23 -05:00
Slava Pestov 10ad5cad53 Working on adding support for the new write barrier to optimized code 2009-10-14 02:06:01 -05:00
Joe Groff 2577ab83a6 only emit ##alien-vector/##set-alien-vector insns if the rep is available 2009-10-10 12:53:10 -05:00
Joe Groff 61befc8bb1 have vshuffle accept simd-128 variable byte shuffles 2009-10-10 11:30:11 -05:00
Joe Groff 96be0d5748 Merge branch 'master' of git://factorcode.org/git/factor 2009-10-10 09:17:01 -05:00
Slava Pestov 09fac95fad compiler.tree.propagation.branches: fix live-branches computation for #dispatch nodes 2009-10-10 00:23:50 -05:00
Joe Groff 5158a12d32 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 2bfcd7ed81 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 4972fbcbc9 implement vneg as an intrinsic in terms of load -0, subtract 2009-10-09 13:16:39 -05:00
Slava Pestov 84306a0786 compiler.codegen: fix failing tests 2009-10-09 09:44:09 -05:00
Slava Pestov 8679775f17 Merge branch 'bitfields' of git://factorcode.org/git/factor into bitfields 2009-10-09 04:12:34 -05:00
Daniel Ehrenberg 373f4420e9 Another identity in value numbering for bitfields 2009-10-08 15:20:42 -05:00
Slava Pestov ae707c6976 Merge branch 'master' into new_gc 2009-10-08 02:29:24 -05:00
Daniel Ehrenberg ab919bab96 Doing constant folding on ##neg and ##not in value numbering 2009-10-08 01:57:54 -05:00
Daniel Ehrenberg 316895e6bf Adding identity to propagation to remove some redundant bitands 2009-10-08 00:59:15 -05:00
Joe Groff 98836a9e2e 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 43b51ef2eb 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 0dfeb74176 typo in convert-to-fill-vector? 2009-10-07 12:53:10 -05:00
Joe Groff 2d79729193 fix ##load-constant/##scalar>vector folding when constant is a fixnum 2009-10-07 12:46:08 -05:00
Joe Groff aee85401af convert all-ones vector ##load-reference/##load-constant to a ##fill-vector insn 2009-10-07 12:35:21 -05:00
Joe Groff a13e75f4f4 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 444624e79f fix x86 %unpack-vector insns 2009-10-06 20:38:51 -05:00
Joe Groff 96cb1d5038 glue conversion intrinsics to instructions 2009-10-06 20:13:38 -05:00
Slava Pestov 4d0ec09d9c vm: put code block owner directly in the header, instead of as the first entry in the literal table. Reduces x86-64 image size by ~700kb, also eliminates separate 'strip' set of staging images from deploy tool 2009-10-06 06:25:07 -05:00
Joe Groff c0423d2f3f Merge branch 'master' of git://factorcode.org/git/factor 2009-10-05 22:34:41 -05:00
Joe Groff 84ecb1266d add insns for vector pack, unpack, integer>float, and float>integer 2009-10-05 22:34:14 -05:00
Slava Pestov a6953ec9ee Merge branch 'master' of git://factorcode.org/git/factor 2009-10-05 18:22:09 -05:00
Slava Pestov ee7cfeba7b compiler.cfg.linear-scan: fix unit test 2009-10-05 18:21:58 -05:00
Joe Groff 3e44e0bb02 rename SIMD vmerge and kids to (vmerge), make new vmerge more generally useful 2009-10-05 17:55:39 -05:00
Slava Pestov 931107397c 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 dca9d3e535 add %merge-vector-head and %merge-vector-tail instructions to back vmerge 2009-10-03 21:48:53 -05:00
Joe Groff 335df20713 add intrinsics for v<=, v<, v=, v>, v>=, vunordered? 2009-10-03 11:29:34 -05:00
Joe Groff b1ec36a324 extend x86 %compare-vector to cover all comparison codes, sometimes stupidly for now 2009-10-02 23:19:56 -05:00
Joe Groff e2e75c6b3a add intrinsic for vnot/vbitnot 2009-10-02 20:04:28 -05:00
Doug Coleman c10b6d4ba7 Merge branch 'docs' of git://github.com/klazuka/factor into klazuka
Conflicts:
	basis/math/vectors/vectors-docs.factor
2009-10-02 15:58:45 -05:00
Joe Groff e153d544eb implement vand, vor, vandn, and vxor as bitwise intrinsics for simd types 2009-10-02 14:17:01 -05:00
Keith Lazuka 8f79ea91ba docs: change $subsection to $subsections 2009-10-02 12:15:48 -04:00
Slava Pestov d47e99dbde Fix compiler.cfg.value-numbering and math.matrices.simd unit tests 2009-10-02 02:32:35 -05:00
Slava Pestov 901e0709e6 Merge branch 'master' of git://factorcode.org/git/factor into improved-aa 2009-10-02 00:21:44 -05:00
Slava Pestov 10a49a4613 compiler.cfg.alias-analysis: fix ##compare where operands are copies 2009-10-01 23:54:19 -05:00
Slava Pestov 231a2d1b71 Fix alias analysis of a ##compare whose input is another ##compare 2009-10-01 23:20:05 -05:00
Joe Groff 9d424a1092 Merge branch 'master' of git://factorcode.org/git/factor
Conflicts:
	basis/compiler/codegen/codegen.factor
2009-10-01 23:14:16 -05:00
Slava Pestov d3acd0a530 compiler.cfg.alias-analysis: optimize ##vm-field-ptr and ##alien-global instructions, and optimize out ##compare between values of different alias classes; this optimizes '[ [ >float ] bi@ [ + ] [ - ] 2bi eq? ]' down to an o-op and removes boxing from '[ [ >float ] bi@ [ + ] [ - ] 2bi = ]' 2009-10-01 23:03:17 -05:00
Joe Groff 7b13fa4283 fold test-vector/branch sequences into a test-vector-branch instruction 2009-10-01 19:53:30 -05:00
Slava Pestov 6740956162 compiler.cfg: don't unbox the same value more than once per basic block 2009-10-01 19:41:23 -05:00
Slava Pestov e6ff877362 compiler.cfg.instructions: remove ##box-float, ##unbox-float, ##box-vector, ##unbox-vector since they can be expressed in terms of ##alien-double, ##set-alien-double, ##alien-vector, ##set-alien-vector, and ##allot 2009-10-01 18:07:50 -05:00
Joe Groff 228ad950bb %test-vector instruction for vany?, vall?, vnone? 2009-10-01 15:35:38 -05:00
Joe Groff 94070c11aa %compare-vector instruction (only does v= for now) 2009-10-01 14:31:37 -05:00
Joe Groff 3ba79be651 Revert "add a %blend-vector intrinsic for v?"
This reverts commit 21e4b28b67.
2009-09-30 23:40:37 -05:00
Joe Groff 37a091a188 Merge branch 'master' of git://factorcode.org/git/factor 2009-09-30 23:04:04 -05:00
Joe Groff 21e4b28b67 add a %blend-vector intrinsic for v? 2009-09-30 23:03:59 -05:00
Slava Pestov 65421b111b 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
Joe Groff 66dc030741 Merge branch 'master' of git://factorcode.org/git/factor 2009-09-30 11:35:40 -05:00
Joe Groff 409bdadfb8 add a "test-mr." word to compiler.cfg.debugger equivalent to "test-mr mr." 2009-09-30 11:34:19 -05:00
Slava Pestov 785b9f2d43 compiler.cfg.value-numbering: fix overly-zealous ##compare-imm conversion 2009-09-30 05:09:20 -05:00
Slava Pestov 8e201ca4b7 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 ba3a06b745 compiler.cfg.value-numbering: add some more rewrite rules, neg/neg, not/not, and a few for SIMD 2009-09-30 02:18:29 -05:00
Slava Pestov 1c8662ce4a math.vectors.simd: add vbroadcast intrinsic, fix integer overflow issues 2009-09-29 22:58:20 -05:00
Slava Pestov 2cdac6059f compiler.cfg.ssa.destruction: don't coalesce registers with different representations, even if they're in the same register class, since this messes up spilling 2009-09-29 22:28:20 -05:00
Slava Pestov 2b13245704 math.vectors.simd: add fast intrinsic for 'nth', replace broadcast primitive with shuffles 2009-09-29 04:48:11 -05:00
Slava Pestov a6e8277b2c math.vectors.simd: add vshuffle intrinsic 2009-09-28 23:12:13 -05:00
Slava Pestov db217295b0 Work in progress 2009-09-28 17:31:34 -05:00
Slava Pestov f08521bf83 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 dc1b6043dc cpu.x86: shifts didn't work if dst != src1; re-organize file a bit 2009-09-28 05:39:53 -05:00
Slava Pestov d9c496c4e4 compiler.cfg.ssa.destruction: we can coalesce two registers with different representations as long as they both belong to the same register class 2009-09-28 03:24:54 -05:00
Slava Pestov ba029a88ff io.mmap: fix obsolete tests and get code to inline better 2009-09-28 03:18:27 -05:00
Slava Pestov 10c5fe5933 math.vectors.simd: add hlshift, hrshift (128-bit shift), vbitandn intrinsics 2009-09-28 02:17:46 -05:00
Slava Pestov f213a67295 compiler.cfg.linear-scan: fix tests for hash order 2009-09-27 23:35:56 -05:00
Slava Pestov 8c9ccdd906 compiler.cfg.linear-scan: tweak it so that register allocation does not depend on hashing order 2009-09-27 23:29:48 -05:00
Slava Pestov be320f67bb compiler: fix codegen test 2009-09-27 22:23:03 -05:00
Slava Pestov 024192c2d4 compiler: add a unit test 2009-09-27 20:36:19 -05: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 8617ac798e Add a couple more def-is-use instructions 2009-09-27 20:34:20 -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
Joe Groff bf3eef9e2d Merge branch 'master' of git://factorcode.org/git/factor 2009-09-26 20:38:19 -05:00
Joe Groff e30819bcac move alien.inline, alien.cxx, alien.marshall to unmaintained; nuke alien.structs 2009-09-26 20:37: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 2aad330c41 Fixing low-level-ir compiler tests for slot changes 2009-09-26 02:48:40 -05:00
Daniel Ehrenberg 364332bd70 Completing slot and set-slot changes on x86 2009-09-26 01:39:48 -05:00
Daniel Ehrenberg fb7f6ab455 Making ##slot and ##set-slot not have a temporary parameter 2009-09-26 00:28:14 -05:00
Slava Pestov 1174d60026 Merge branch 'vm_cleanup' of git://github.com/phildawes/factor 2009-09-25 19:04:19 -05:00
Slava Pestov 6079711ecb hints: fix regression with declarations 2009-09-25 18:50:08 -05:00
Slava Pestov b655b6662c compiler: add unit test for undefined_symbol regression 2009-09-25 18:08:33 -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 c0957ed908 compiler.codegen passes temp reg to %call-gc 2009-09-25 18:48:13 +01:00
Slava Pestov e5b94b11d7 Some fixes and cleanups in math.vectors
- Tighten up type inference for operations on complex float arrays
- Fix v. to have correct behavior with complex numbers
- Rename v<< and v>> to vlshift and vrshift to avoid clashing with v>> accessor
2009-09-24 06:58:33 -05:00
Slava Pestov a4e1d5511e Tweaks to reduce deployed image size 2009-09-24 06:24:43 -05:00
Slava Pestov 2ea0b9da1d Merge branch 'vm_cleanup' of git://github.com/phildawes/factor 2009-09-24 04:31:55 -05:00
Slava Pestov 24039cb56a math.vectors.simd: add v<< and v>> intrinsics for bitwise shifts on elements 2009-09-24 03:32:39 -05:00
Phil Dawes 67aec74439 cleaned up vm-field-ptr compiler code 2009-09-24 08:16:57 +01:00
Doug Coleman abb8a221db Merge branch 'master' of git://factorcode.org/git/factor
Conflicts:
	basis/math/vectors/simd/simd-docs.factor
2009-09-23 10:11:49 -05:00
Slava Pestov 17bf0c721d Merge branch 'master' into integer-simd 2009-09-23 02:48:38 -05:00
Slava Pestov b136ad44d0 compiler.cfg.ssa.cssa: correctly handle overflowing fixnum instructions 2009-09-23 02:47:56 -05:00
Slava Pestov abac963882 math.vectors.simd: new operations: vabs vsqrt vbitand vbitor vbitxor 2009-09-23 02:47:14 -05:00
Slava Pestov fda8870848 Merge branch 'master' into integer-simd 2009-09-22 20:21:40 -05:00
Doug Coleman 5772b57012 Merge branch 'master' of git://factorcode.org/git/factor 2009-09-22 18:00:47 -05:00
Slava Pestov f03b54287e compiler.tree.propagation.branches: M: #phi propagate-around was unnecessary 2009-09-22 17:56:50 -05:00
Daniel Ehrenberg 2019c0a747 Merge branch 'master' of git://factorcode.org/git/factor into constraints 2009-09-22 16:09:33 -05:00
Daniel Ehrenberg 198fdc82ab Fixing failing unit tests in compiler.tree.propagation due to constraints 2009-09-22 16:01:14 -05:00
Doug Coleman 28e5a27c3f Merge branch 'master' of git://factorcode.org/git/factor
Conflicts:
	core/generic/generic-tests.factor
2009-09-22 10:25:42 -05:00
Slava Pestov 9a7577a58b Fix test failures in compiler.cfg.linearization.order, compiler.tests.low-level-ir and compiler.graphviz 2009-09-22 05:07:52 -05:00
Slava Pestov 8c2f5543cc Merge branch 'master' into integer-simd 2009-09-22 03:24:52 -05:00
Slava Pestov 0778c20722 compiler.cfg.linearization.order: basic blocks were being inserted twice if some blocks had repeated successors, causing problems for register allocation 2009-09-22 03:19:23 -05:00
Doug Coleman e8502d1ebc Merge branch 'master' of git://factorcode.org/git/factor 2009-09-21 17:59:48 -05:00
Slava Pestov e6cddf1fa7 Merge branch 'master' of git://factorcode.org/git/factor into integer-simd 2009-09-21 17:58:24 -05:00
Slava Pestov 85c916fedc Rename specific-method to method-for-class, rename (effective-method) to method-for-object, and make both much faster 2009-09-21 17:42:20 -05:00
Slava Pestov e04fba6bc7 Fix conflict 2009-09-20 23:18:07 -05:00
Slava Pestov 66871995c9 math.vectors.simd: add saturated arithmetic operations 2009-09-20 23:16:02 -05:00
Doug Coleman 026761ed62 Merge branch 'master' of git://factorcode.org/git/factor
Conflicts:
	basis/classes/struct/struct-tests.factor
	basis/functors/functors-tests.factor
	basis/specialized-arrays/specialized-arrays-tests.factor
2009-09-20 23:02:49 -05:00
Doug Coleman 47fab85a00 replace usages of <" with """ 2009-09-20 22:42:40 -05:00
Slava Pestov 78c949b9b7 math.vectors: add v+- word which is accelerated by SSE3 2009-09-20 17:43:16 -05:00
Slava Pestov dfb43bd2ca 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 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 ac5ea1769b get compiler tests loading 2009-09-16 09:20:47 -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 6e5ddc0c33 vm pointer passed to nest_stacks and unnest_stacks (win32) 2009-09-16 08:17:26 +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 b70e60eaea added VM relocation type 2009-09-16 08:16:30 +01:00
Joe Groff 334e93bbbf get things to a point where they bootstrap again 2009-09-15 21:43:18 -05:00
Joe Groff 02b797f11b 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
Slava Pestov aeb6a01710 compiler.tree.propagation: fix unary-op type functions with complex number inputs 2009-09-15 14:30:20 -07:00
Slava Pestov 1b5614f974 math.functions: more accurate log10 (fixes problem reported by OneEyed) 2009-09-14 16:19:58 -05:00
Slava Pestov 8c46388272 compiler.cfg.builder: don't run certain tests if float intrinsics are not available 2009-09-13 23:12:47 -05:00
Slava Pestov 427bfb4ab8 math: add unordered comparison operators u< u<= u> u>= which behave exactly like < <= > >= except no floating point exceptions are set if one or both inputs are NaNs; also add efficient intrinsic for unordered? predicate, and fix propagation type functions for abs, absq, and bitnot 2009-09-12 22:20:13 -05:00
Slava Pestov 7aac0d69d6 ALIEN: now reads a hexadecimal integer instead of a decimal one, since in general hex is more useful for addresses 2009-09-12 21:17:53 -05:00
Slava Pestov 10423e0d56 compiler.tree.propagation: convert /i of a positive integer by a power of two into a shift 2009-09-11 21:03:11 -05:00
Slava Pestov 89d6096130 compiler.cfg.intrinsics: compile float-mod as a ##binary-float-function instead of a primitive call 2009-09-11 21:00:17 -05:00
Slava Pestov 527db8995a Specialized array overhaul
- Replace hand-written specialized-arrays.* subvocabularies with new system; instead of USE:ing specialized-arrays.T, do SPECIALIZED-ARRAY: T
- Ditto for specialized-vectors; use SPECIALIZED-VECTOR:
- io.mmap.functor: removed entirely, use <mapped-array> instead
- struct-arrays and struct-vectors have been removed because specialized arrays and vectors subsume them entirely
2009-09-09 22:33:34 -05:00
Slava Pestov 66f500bdd7 Fix the build 2009-09-09 13:44:54 -05:00
Slava Pestov 72eec2c53e compiler.cfg.save-contexts: add new pass 2009-09-08 21:56:28 -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 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 88b4780096 Merge branch 'master' of git://factorcode.org/git/factor 2009-09-08 14:22:52 -05:00
Slava Pestov 8eeeeb5c5b inline alien-vector and set-alien-vector if SIMD is not available for a small speedup 2009-09-08 13:56:17 -05:00
Doug Coleman 551c06db2d Merge branch 'master' of git://factorcode.org/git/factor 2009-09-08 13:22:52 -05:00
Slava Pestov 17821626c3 Fix conflicts 2009-09-07 23:51:25 -05:00
Slava Pestov b279c5751c compiler.tree.propagation: type check inputs to unsafe foldable words manually, so that stuff like [ "Hi" { } fixnum+fast ] doesn't crash in the compiler 2009-09-07 23:40:23 -05:00
Slava Pestov 0b35d79aee compiler.tree.propagation.call-effect: stronger call( inlining; now can inline 'a [ b ] curry call(' where 'a' is literal, [ b ] doesn't infer, but [ a b ] does infer. This simplifies classes.struct:memory>struct 2009-09-07 17:45:03 -05:00
Slava Pestov e20e9008ea compiler.cfg.value-numbering: update tests for Joe's condition code changes 2009-09-04 03:11:56 -05:00
Slava Pestov 555543faae compiler: tweak generated code 2009-09-04 03:01:18 -05:00
Slava Pestov 1c87486320 math.vectors.simd: allow punning SIMD vectors between types 2009-09-04 02:35:58 -05:00
Slava Pestov 8223715a07 compiler.cfg.intrinsics: fix type detection on the alien type for vector accessors 2009-09-04 02:22:54 -05:00
Slava Pestov 1f5193198b compiler: clean up code generation for alien boxing/unboxing a bit 2009-09-03 21:22:43 -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 9cc705f6ba math.vectors.simd: split off intrinsics into a sub-vocabulary, to avoid loading most of the SIMD code on bootstrap 2009-09-03 03:43:43 -05:00
Slava Pestov 11aadb74af compiler.tree.propagation: type function for clone had an issue, sometimes clone would get optimized out because of incorrect constant folding 2009-09-03 02:40:18 -05:00
Slava Pestov 52b99c050e 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
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 0cf3151216 compiler.cfg.intrinsics: cleanup: the "intrinsic" word property is now a quotation, not a boolean, making this mechanism more extensible 2009-08-30 22:20:49 -05:00
Slava Pestov 74d196d77c compiler/tests/codegen.factor: don't do exact float comparison 2009-08-30 18:57:45 -05:00
Slava Pestov 43af9b06a4 compiler.cfg.linear-scan.live-intervals: dead-value-error is never thrown anymore 2009-08-30 05:15:18 -05:00
Slava Pestov b35a01879e %box-displaced-alien: fix clobberage found by Doug 2009-08-30 05:11:08 -05:00
Slava Pestov f6a836d1e9 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 fa64522421 compiler.cfg.value-numbering: fix ##box-displaced-alien simplification 2009-08-28 19:05:49 -05:00
Slava Pestov f30aa5d20e compiler: add fixnum-min/max intrinsics; ~10% speedup on benchmark.yuv-to-rgb 2009-08-28 19:02:59 -05:00
Slava Pestov 99bf9fadfb 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 5f33f7306f compiler.tree.propagation.transforms: don't fail to compile if 'at' called on something that's not an assoc 2009-08-27 18:57:56 -05:00
Slava Pestov c9cba1cc00 compiler.cfg.instructions: forgot that ##box-displaced-alien needs a GC check; fixes segfault in benchmark.mandel 2009-08-27 04:09:35 -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
Doug Coleman 546367b88a use structs 2009-08-26 11:01:39 -05:00
Doug Coleman be57edbff2 Merge branch 'master' of git://factorcode.org/git/factor 2009-08-26 09:15:33 -05:00
Slava Pestov 40b522c9d0 compiler.cfg.linear-scan: fix unit tests for new fake-representations 2009-08-26 08:58:00 -05:00
Slava Pestov 02ec791ab7 compiler: only run float test in low-level-ir if float intrinsics enabled; fixes SIGILL on non-sse2 x86 machines 2009-08-26 06:58:47 -05:00
Slava Pestov d5fb53d417 compiler.cfg.debugger: fix fake-representations so that low-level-ir tests can pass on x86 2009-08-25 23:44:01 -05:00
Slava Pestov 4fe0257169 cpu.x86: use SQRTSD instruction for math.libm:fsqrt word 2009-08-25 23:22:15 -05:00
sheeple 2f789f735d basis/compiler/tests/low-level-ir: add ##copy double-float-rep test 2009-08-25 19:41:17 -05:00
Doug Coleman 96120dc8e5 update new structs again 2009-08-25 16:31:58 -05:00
Doug Coleman 3fa6500cd2 update compiler.tests.alien to joe's latest changes 2009-08-25 12:00:06 -05:00
Doug Coleman 3d05dd1abf use new structs wherever possible in compiler tests 2009-08-25 11:59:33 -04:00
Slava Pestov 009d3a87f6 Add some unit tests 2009-08-22 17:15:10 -05:00
Slava Pestov 930c9ed2ac next-fastcall-param word was not being called; on x86 its equivalent to inc but on ppc there is more logic, this fixes FFI on PowerPC 2009-08-21 20:15:19 -05:00
Slava Pestov c15555056e compiler.cfg.dataflow-analysis: when intersecting sets, treat uninitialized sets as universal rather than empty; reduces number of stack instructions generated by 1% 2009-08-20 18:15:41 -05:00
Slava Pestov 0bfbcd2108 compiler.tree.modular-arithmetic: fix regression; set-alien-*-1 was not always open-coded 2009-08-20 17:56:49 -05:00
Slava Pestov 78f8d02ed4 compiler.tree.modular-arithmetic: eliminate >bignum calls where possible, convert fixnum-shift to fixnum-shift-fast if shift count is positive, don't run if there are no modular values 2009-08-20 03:47:45 -05:00
Slava Pestov b57894a78c compiler.tree.propagation: bitand custom inlining was wrong if the second input was a bignum 2009-08-20 03:47:07 -05:00
Slava Pestov 54ee3c3d01 compiler.cfg.stacks.local: more accurate local replace set computation; optimizes out 'swap swap' 2009-08-19 22:00:21 -05:00
Slava Pestov 552d069e9f compiler: add unit tests for new bugs 2009-08-19 16:56:26 -05:00
Slava Pestov c9cc1fa6a9 Fix interval inference of abs, absq when input is a complex number 2009-08-19 16:06:37 -05:00
Slava Pestov 75137bafb1 compiler.tree.propagation: improved interval inference for absq eliminates a conditional from math.vectors:distance. Type inference for rational math also a bit sharper now 2009-08-19 02:33:41 -05:00
Slava Pestov 771488d87b Fix some unit test failures 2009-08-18 03:49:05 -05:00
Slava Pestov 79a3f6b0d5 compiler: inline singleton predicates, and optimize predicate engines, reduces terrain demo deployed size by ~20kb 2009-08-17 23:59:24 -05:00
Slava Pestov b3693e3c3b compiler.tree.propagation: remove method inlining heuristic 2009-08-17 22:29:05 -05:00
Slava Pestov a742145fd9 compiler.tree.modular-arithmetic: >fixnum elimination and value info annotations were too aggressive 2009-08-17 01:20:25 -05:00
Slava Pestov aeb33f5f15 compiler.tree.modular-arithmetic: stronger optimization handles > 1 usages case as well as values defined and used in loops. Eliminates 5 out of 8 >fixnum calls in benchmark.yuv-to-rgb 2009-08-15 18:42:41 -05:00