1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-19 11:10:25 +02:00
Commit graph

450 commits

Author SHA1 Message Date
Andy Wingo
f0cecc45d4 Convert tests to jit_load_args 2019-03-25 15:24:40 +01:00
Andy Wingo
df0a5d738f Better loading of args to registers; add tests 2019-03-25 15:08:05 +01:00
Andy Wingo
021f31f1dc Add "addi" test 2019-03-25 12:31:51 +01:00
Andy Wingo
bad7e34c83 Implementation of new design
Documentation to come, as tests get added and things settle down.
2019-03-25 12:21:23 +01:00
Andy Wingo
0d81c5c337 Beginnings of port of x86 to new design 2018-11-04 12:18:51 +01:00
Andy Wingo
c51c93708a Make _rvs array static-const 2018-11-04 12:18:38 +01:00
Andy Wingo
9bc0158238 Inline private.h into jit.c 2018-11-04 10:49:08 +01:00
Andy Wingo
447fccfed6 Remove needless PUBLIC/HIDDEN definitions 2018-10-31 22:05:09 +01:00
Andy Wingo
017740cb52 Really finish stdint conversion 2018-10-31 21:54:19 +01:00
Andy Wingo
9e70bdab38 Update gitignore 2018-10-31 21:49:41 +01:00
Andy Wingo
a0714ec410 Finish conversion to stdint types 2018-10-31 21:49:10 +01:00
Andy Wingo
47970773bc "extern"-related cleanup, and further implementation 2018-10-31 21:45:16 +01:00
Andy Wingo
0d78447d85 Trim unneded bits from jit.c 2018-10-31 19:33:26 +01:00
Andy Wingo
e81b64d2fc Update call/receive machinery
Update calls and receives to take their arguments all at once, for more
efficient shuffling.
2018-10-31 11:34:23 +01:00
Andy Wingo
17a38ffd9c Add endian.h 2018-10-30 13:54:48 +01:00
Andy Wingo
f3f71941ac Replace jit_int32_t, etc with stdint types 2018-10-30 13:48:57 +01:00
Andy Wingo
d567faf657 Create beginning of stripped-down lightning interface
This file is the beginning of a lightened lightning.
2018-10-30 13:36:09 +01:00
Andy Wingo
90ebba864a Remove unneeded bits of lightning 2018-10-30 12:32:26 +01:00
Andy Wingo
9c1b01fba5 Simplify file names 2018-10-30 12:29:18 +01:00
Andy Wingo
846e7bc443 Remove -sz.c files
The new form of this library will not need them.
2018-10-30 12:21:45 +01:00
Andy Wingo
48993156f6 Rename lightning.c to jit.c 2018-10-30 12:20:05 +01:00
Andy Wingo
796ec6c16d Rename include to jit.h, move all files to jit/
This change is in anticipation of making this lightning fork into an
include-only library.
2018-10-30 12:16:35 +01:00
Andy Wingo
a5263b6618 Remove autotools 2018-10-30 11:48:23 +01:00
Andy Wingo
8215433144 Remove bits of .gitignore no longer needed 2018-10-30 11:47:57 +01:00
Andy Wingo
beac56d7ec Remove TODO 2018-10-30 11:47:49 +01:00
Andy Wingo
4ca2f6ef2a Archive lightning ChangeLog 2018-10-30 11:42:08 +01:00
Andy Wingo
59064a1949 Move lightning.texi up to root, and remove Makefile.am 2018-10-30 11:35:53 +01:00
Andy Wingo
414f530c1d Inline body.texi and version.texi into lightning.texi 2018-10-30 11:35:01 +01:00
Andy Wingo
423d048b25 Remove example .c files from documentation 2018-10-30 11:33:58 +01:00
Andy Wingo
d90a545a58 Strip "get-jit-size" feature from lightning.
* libguile/lightning/Makefile.am:
* libguile/lightning/configure.ac:
* libguile/lightning/size.c: Remove devel-only "get-jit-size" feature.
2018-10-30 11:22:35 +01:00
Andy Wingo
549dc50cfd Update .gitignore 2018-10-30 11:16:01 +01:00
Andy Wingo
3c76115aec Update version.texi 2018-10-30 10:48:00 +01:00
Paulo Andrade
94a188844d Correct typo and values in jit_sparc-sz.c 2018-04-25 16:02:52 -03:00
Paulo Andrade
d2ff737812 HPPA: Correct wrong regarg_p check
If argument registers are in incremental order in the global _rvs
vector, the check if a register argument is reversed.
  Adapted from a regression found in sparc 64.
2018-04-20 15:01:44 -03:00
Paulo Andrade
2cea99361b Build and pass all tests on 32 and 64 bit sparc
* include/lightning/jit_private.h: Add new register classes to
	flag float registers and double only registers, required for sparc64
	where only low 32 bit fpr registers can be used for single precision
	operations.
	Add new 128 bit jit_regset_t type for sparc64 register set.

	* include/lightning/jit_sparc.h, lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c,
	lib/jit_sparc-sz.c, lib/jit_sparc.c: Update for 64 bits sparc.

	* lib/lightning.c: Update for new jit_regset_t required for sparc64.
2018-04-20 10:37:37 -03:00
Paulo Andrade
ed5589ce59 Build and pass all test cases on Alpha Linux
* check/lightning.c, include/lightning.h: Add the new jit_va_push
	interface. That should be called when passing a va_list to a C
	function. This is required because on Alpha a va_list is passed
	by value, and lightning does not know about data types, so, cannot
	understand it is pushing a va_list as argument.

	* lib/jit_names.c, lib/lightning.c: Minor changes for the new
	jit_code_va_push.

	* check/cva_list.c: Update only test case using jit_va_push, to
	pass a va_list to a C function.

	doc/body.texi: Better documentation of the varargs interface.

	* jit_alpha.c, jit_alpha-cpu.c: Update to properly push a
	C va_list and correctly calculate varargs offset.

	* lib/jit_aarch64-sz.c, lib/jit_aarch64.c, lib/jit_alpha-sz.c,
	lib/jit_arm-sz.c, lib/jit_arm.c, lib/jit_hppa-sz.c, lib/jit_hppa.c,
	lib/jit_ia64-sz.c, lib/jit_ia64.c, lib/jit_mips-sz.c, lib/jit_mips.c,
	lib/jit_ppc-sz.c, lib/jit_ppc.c, lib/jit_s390-sz.c, lib/jit_s390.c,
	lib/jit_sparc-sz.c, lib/jit_sparc.c, lib/jit_x86-sz.c, lib/jit_x86.c:
	Update for the new jit_va_push interface.
2018-02-26 09:48:50 -03:00
Paulo Andrade
b64b82ca51 Always set t12 to address of called function
* lib/jit_alpha-cpu.c: Always set t12 to the address of the
	current function, to properly work on all systems. Previously
	the shortcut did only work on Tru64. For Linux and glibc the
	change is required.
2018-02-22 13:17:28 -03:00
Paulo Andrade
2cf092efe4 Correct logic error with jit_live in jit_retr
* lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
	lib/jit_mips.c, lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c:
	Correct wrong logic in usage of jit_live in jit_retr. The
	problem is that if a temporary is required during epilog,
	the return register might be allocated, so, jit_live must always
	be used.
2018-02-22 13:05:04 -03:00
pcpa
59f32e85c3 Add extra argument to jit_update to prevent recursion on branches
* lib/lightning.c: Avoid deep recursions when computing live
	register ranges.
2018-01-31 17:09:29 -05:00
pcpa
68dc475474 Correct issues with 32 bit big endian mips abis
* lib/jit_mips-cpu.c: Correct frame size and varargs
	initialization for the n32 abi.
	* lib/jit_mips.c, lib/jit_mips-fpu.c: Correct 32 bit abis
	in big-endian.
2018-01-31 08:52:27 -05:00
pcpa
df57fa95eb GNU lightning 2.1.2 release 2017-09-14 13:27:48 -04:00
pcpa
19439d47cb Correct binutils version detection 2017-09-14 13:27:09 -04:00
pcpa
c72b92333d GNU lightning 2.1.1 release 2017-09-14 10:44:34 -04:00
pcpa
3fc2eb2f95 Update copyright year 2017-09-14 10:44:12 -04:00
pcpa
7259f9dc8a Adapt for binutils 2.29
* configure.ac: Add check for binutils 2.29 prototype to the
	disassembler function.
	* lib/jit_disasm.c: Adapt for binutils 2.29 change.
2017-09-13 11:39:30 -04:00
pcpa
d761499315 Add a second pass to compute live register ranges
* include/lightning/jit_private.h, lib/lightning.c: Add a
	second pass from start when computing register live ranges.
	This should be used temporarily, and is required for certain
	loop constructs, with several consecutive blocks not referencing
	a live register.
2017-05-09 13:27:37 -04:00
pcpa
aa939b8ef8 Correct wrong live information for some code patterns
* lib/lightning.c: Correct wrong movr simplification,
	remove no longer needed code to set return registers live
	and update live register set when reaching a label boundary,
	but do not descend if the block has been already visited.
	The later need some tuning for complex code generation, where
	it will still have issues.
2016-05-05 17:55:29 -03:00
pcpa
b00c750830 Correct wrong movr simplification 2016-05-05 11:19:45 -03:00
Paulo Andrade
be32b6ad15 Correct wrong check for argument of value 2 in check/fib.tst. 2015-11-30 17:04:47 -02:00
Paulo Andrade
76876dd7bf Implement a correct generation of Fibonacci numbers.
* doc/body.texi: Change documentation to no longer say
	it is a variant of the Fibonacci sequence, and document
	a proper implementation.
	Thanks to Jon Arintok for pointing out that the Fibonacci
	sequence generation was incorrect. It was documented, but
	still confusing.

	* check/fib.tst, check/fib.ok, check/bp.tst, check/bp.ok,
	doc/ifib.c, doc/rbif.c: Implement a proper Fibonacci
	sequence implementation.
2015-11-30 15:32:48 -02:00