Commit Graph

282 Commits (17821626c3ea3da6a4c1b51190883bce7a887930)

Author SHA1 Message Date
Slava Pestov 17821626c3 Fix conflicts 2009-09-07 23:51:25 -05:00
Joe Groff 9430fdc4b6 i had comisd/ucomisd backwards on x86 2009-09-04 12:30:30 -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
Slava Pestov 1f5193198b compiler: clean up code generation for alien boxing/unboxing a bit 2009-09-03 21:22:43 -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 80ed4bc918 Merge branch 'master' into simd 2009-09-03 03:45:58 -05:00
Slava Pestov f811208271 Detect SSE version and enable the correct set of SIMD intrinsics 2009-09-03 03:28:38 -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
Joe Groff e9a5ed5931 i suck at reading tech docs--those were m64 instructions, not mm instructions 2009-09-02 12:58:35 -05:00
Joe Groff 0ddf19d033 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 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
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 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
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 4fe0257169 cpu.x86: use SQRTSD instruction for math.libm:fsqrt word 2009-08-25 23:22:15 -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 2d575d7ec9 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 4d2160799f Split off the notion of a register representation from a register class 2009-08-07 17:44:50 -05:00
Slava Pestov a7e61632d9 cpu.x86.assembler: make some words private 2009-08-05 18:30:42 -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 ebec4ffd75 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-31 17:59:00 -05:00
Slava Pestov 0e59d29282 cpu.ppc: fix small typos 2009-07-31 17:57:15 -05:00
Doug Coleman c33343b302 fix using list on win64 2009-07-31 16:27:18 -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 db55a031df Move a bunch of GC check generation logic to platform-independent side 2009-07-30 21:28:27 -05:00
Slava Pestov d09013b311 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-30 19:11:02 -05:00
Joe Groff b49fb43b60 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-30 11:05:36 -05:00
Joe Groff c59c619364 add additional SSE2 packed integer operations 2009-07-30 11:05:12 -05:00
Slava Pestov 99216b8435 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 e3c38262ed Oopsie 2009-07-30 08:27:52 -05:00
Slava Pestov c9feb6f012 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 4842641e75 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 32a3abc9b4 cpu.x86: update non-optimizing compiler backends for assembler vocab split 2009-07-30 02:22:37 -05:00
Slava Pestov 226908d2d2 cpu.x86.assembler: fix extended 8-bit registers (DIL, SIL, SPL, BPL) 2009-07-29 22:32:22 -05:00