Commit Graph

147 Commits (eb46e23eabe2ee65f4560c0bfbf49aadfa3b1916)

Author SHA1 Message Date
Björn Lindqvist 1c94c60541 cpu.*: new generic word enable-cpu-features
The word is used during bootstrap to enable available cpu specific
intrinsics.
2016-08-12 11:41:45 +02:00
Björn Lindqvist 1b6e6915ac cpu.*: float-on-stack? word never used 2016-08-08 10:29:17 +02:00
Björn Lindqvist 86274c895e cpu.x86.*: improved varargs support
Now on the x86.64 platform, we set the AL register to contain the nr of
floating point values passed to the function as required by the abi.
2016-08-02 23:14:37 +02:00
Björn Lindqvist b2ed71ec7f cpu.x86.*: fix %prepare-var-args
EAX EAX XOR over RAX shaves off one byte
2016-07-30 00:07:26 +02:00
Doug Coleman 330c7ba156 factor: Removing SLOT: nth/at/global in favor of using change: at for tuple slots named ``at`` and change-at for hashtables.
Redo many FROM: and QUALIFIED: and using lists.
2015-08-12 08:49:02 -05:00
Björn Lindqvist 3678f62508 x86.64: change the register order so that RBX is allocated before RCX 2015-06-16 18:28:32 -07:00
Björn Lindqvist 48e6455186 cpu.x86.*: %mov-vm-ptr isn't so useful, shorter and simpler to write
vm-reg MOV
2015-05-22 12:22:29 -07:00
Doug Coleman 9ff6d2d49c cpu.x86.64: 64-bit register is RDX not EDX. Fixes #1191. 2014-11-07 22:03:12 -08:00
Doug Coleman 262eb73ea6 basis: Re-enable some things I commented out. Fixes #22. Thanks @ajvondrak! 2012-12-31 11:48:30 -08:00
Doug Coleman a0dd953e33 starting point - Fix bootstrap; I broke it in merging. Disable environment variables because the compiler isn't loaded yet and can't call C ffi functions, and tools.test loads this vocab.
Disable intrinsics in cpu.x86.64 for now, since they invoke the compiler
Fix ##branch renaming to ##branch,
To work on this branch:
./factor -include=math -i=boot.image
./factor -run=listener
USE: compiler USE: tools.test save
enable-optimizer

Error message is now:
T{ vregs-shouldn't-interfere f 409 424 }
2012-12-31 11:03:45 -08:00
Doug Coleman e97c8971a5 cpu.x86: Some calls to CPUID take a parameter in ECX. Add cpuid-extended to allow these. 2012-09-19 11:30:54 -07:00
Doug Coleman 9c0a8b3250 cpu.x86: Fix load order. 2012-09-19 08:40:18 -07:00
Joe Groff 079025559d simplify function prologs 2011-12-14 09:56:49 -08:00
Joe Groff d927a070ed cpu.x86: enable POPCNT with a flag
If bootstrapped with '-enable-popcnt' and the host CPU supports it, enable the POPCNT-based fixnum-bit-count intrinsic. Fixes #436.
2011-12-12 16:43:49 -08:00
Joe Groff 6498bc65ce compiler: emit safepoints in optimized prologs 2011-11-23 11:11:25 -08:00
Doug Coleman 94db86a6db Make "foo.private" require load foo instead.
Move require from vocabs.loader to vocabs. Update everything.
Fixes #201.
2011-11-02 11:50:03 -07:00
Joe Groff 0c022f2454 compiler: add ##safepoint IR insn 2011-10-27 21:14:46 -07:00
Slava Pestov b89e9a549b Split up compiler.codegen.fixup into compiler.codegen.{gc-maps,labels,relocation} 2011-10-03 00:25:47 -07:00
Doug Coleman bf2a96e9e0 Remove Windows CE from core/ basis/ and build-support/
Rename the winnt singleton to windows in core/ basis/ extra/
Rename boot images winnt -> windows
Fixes #84.
2011-09-18 23:19:06 -05:00
Joe Groff 9472c866da cpu.x86.64: rescue from the perils of cut and paste code (fix bug reported by x6j8x) 2010-08-14 09:14:22 -07:00
Slava Pestov 1985705413 compiler: now that FFI has been deconcatenatized, we no longer need the special ##unary-float-function and ##binary-float-function fastpaths 2010-08-13 23:59:19 -07:00
Slava Pestov b5fc39c198 compiler.cfg: Reading the return value of a float-returning function on x86-32 had a side effect of popping the x87 stack, so it was not correct for DCE to just eliminate this if the return value was not used. Fix this by adding a new dead-outputs slot to alien-call-insns and having DCE move dead returns there 2010-08-13 23:19:56 -07:00
Slava Pestov 168dd1f825 FFI rewrite part 7: compile callback bodies with the optimizing compiler 2010-07-28 00:49:26 -04:00
Slava Pestov 0fbe78be00 cpu.x86.64: fix calling varargs functions 2010-07-19 16:03:39 -04:00
Slava Pestov e5dd21b0b9 compiler.cfg: nuke ##allot-byte-array instruction 2010-07-16 19:57:45 -04:00
Slava Pestov e7191998f8 cpu.x86.64: fix typos 2010-07-14 17:59:51 -04:00
Slava Pestov 867530223c cpu.x86: fix %load/store-stack-param for 32-bit 2010-07-14 17:50:40 -04:00
Slava Pestov e27adb2830 compiler: re-architect low-level optimizer to allow more than one output value per instruction 2010-07-13 07:40:14 -04:00
Slava Pestov e86f434f26 Add GC maps to ##box, ##box-long-long, ##alien-invoke, ##alien-indirect and ##call-gc; remove ##gc-map instruction 2010-06-14 19:39:46 -04:00
Slava Pestov 8ed4760b51 cpu.x86: combine 32-bit and 64-bit %dispatch template 2010-06-11 21:52:38 -04:00
Slava Pestov 806e54630a GC maps for more compact inline GC checks 2010-06-11 20:06:00 -04:00
Slava Pestov c9ad0856d5 cpu.x86.64: callback prologue was clobbering 5th parameter register on x86-64 2010-05-23 03:00:53 -04:00
Slava Pestov 3104ad779a cpu.x86.64: call check-sse to ensure that cpu.x86.sse is loaded 2010-05-17 11:43:42 -04:00
Slava Pestov 7ff309d50e cpu.x86: get rid of this extra-stack-space nonsense 2010-05-17 02:14:44 -04:00
Slava Pestov 5b48cd2a63 FFI rewrite part 5: return value boxing and callback parameter boxing now uses vregs; simplify return value unboxing 2010-05-16 03:43:23 -04:00
Slava Pestov 4a98278720 cpu.x86.32: check for SSE2 on bootstrap since Factor now requires it 2010-05-13 18:25:46 -04:00
Slava Pestov f89b85db7b Temporary fixes for x86-32 until FFI boxing is rewritten 2010-05-12 01:41:49 -04:00
Slava Pestov ee0640f176 Move flatten-c-type to death row so that it can be executed in part 5 2010-05-11 22:26:31 -04:00
Slava Pestov eb802208d1 FFI rewrite part 4: parameter and return value unboxing redesign 2010-05-11 19:11:44 -04:00
Slava Pestov 45689dbfe6 compiler: simplify ##unbox-small/large-struct by emitting an ##unbox-any-c-ptr first 2010-05-10 01:38:34 -04:00
Slava Pestov 4478c3a51a FFI rewrite part 3: eliminate ##push-context-stack and ##pop-context-stack 2010-05-10 00:46:29 -04:00
Slava Pestov 7316d41226 FFI rewrite part 2: use ##peek and ##replace instructions to access stack 2010-05-09 23:26:43 -04:00
Slava Pestov c211c3e84e FFI rewrite part 1: split up ##alien-invoke and friends into smaller instructions 2010-05-09 21:36:52 -04:00
Slava Pestov f988dad79c compiler.cfg: add ##load-float instruction for single precision floating point constants 2010-05-07 18:26:00 -04:00
Slava Pestov e763c74096 More FFI cleanups 2010-05-05 01:13:45 -04:00
Slava Pestov 58e4381eb1 compiler: new "binary literal area" at the end of a word's machine code stores constant floats and SIMD vectors; this allows ##load-reference/##load-memory fusion to be performed on x86-64, with a RIP-relative address reaching the data; also simplifies VM since custom relocation types used by the previous 32-bit-only optimization are no longer needed 2010-05-03 17:34:35 -04:00
Slava Pestov 95ff5ffe51 New GC checks work in progress 2010-05-03 17:34:16 -04:00
Slava Pestov 503c0fcfde compiler: Start using tagged-rep for stuff, and split up compiler.cfg.representations into several sub-vocabularies 2010-05-03 17:34:01 -04:00
Joe Groff 3e0d86f355 Merge branch 'master' of git://factorcode.org/git/factor into abi-symbols
Conflicts:
	basis/compiler/tests/alien.factor
2010-04-06 12:30:15 -07:00
Slava Pestov c0af678c5b cpu.x86.assembler: add support for absolute addressing on x86-64; [RIP+] now behaves like [] did, and [] now does absolute addressing just like in 32-bit mode 2010-04-04 19:42:57 -04:00