Andy Wingo
da98f48ce7
Attempt to fix CI on Debian
2019-05-16 12:28:07 +02:00
Andy Wingo
2badf61add
Attempt to fix CI on Debian
2019-05-16 12:26:35 +02:00
Andy Wingo
d6e23795d1
Attempt to fix CI on Debian
2019-05-16 12:24:00 +02:00
Andy Wingo
f679e9e8af
Attempt to fix CI on Debian
2019-05-16 12:22:18 +02:00
Andy Wingo
8977016a89
Fix YAML for CI
2019-05-16 12:11:12 +02:00
Andy Wingo
826d5a95c3
Fix dpkg --add-architecture invocation
2019-05-16 12:08:22 +02:00
Andy Wingo
926275e123
Add support for aarch64 in CI
2019-05-16 12:03:38 +02:00
Andy Wingo
9d4185af2b
Remove jit_nop
...
Instead, jit_align will call nop() internally. You can't nop 3 bytes on
most architectures.
2019-05-16 11:40:24 +02:00
Andy Wingo
f2d7321504
Aarch64 backend avoids needless temporary register allocation
2019-05-16 11:31:50 +02:00
Andy Wingo
9638e4f169
Fix a couple bugs related to aarch64 literal pools
2019-05-16 11:03:49 +02:00
Andy Wingo
9c9389ad2b
Fix enter/leave JIT ABI
2019-05-16 10:45:44 +02:00
Andy Wingo
a643f99d68
Fix compilation on aarch64
2019-05-16 10:19:02 +02:00
Andy Wingo
7e0b0be1ba
Fix GPR temporary selection
2019-05-15 16:26:18 +02:00
Andy Wingo
09e71475f4
Allow a backend to have multiple temporary registers
2019-05-15 16:19:33 +02:00
Andy Wingo
5b8262e804
Rework register saving to avoid push/pop
...
Push and pop are not well supported on AArch64, so we might as well just
bump the stack pointer once and fill in by offset.
2019-05-15 15:41:02 +02:00
Andy Wingo
0bfdcc7016
Refactor to add support for constant tables, shifted relocs
2019-05-14 15:53:25 +02:00
Andy Wingo
19e7712358
First pass at aarch64 assembler port
2019-05-14 15:46:19 +02:00
Andy Wingo
fc9b474da6
Refactor some bits from x86 to lightening
2019-05-10 14:14:32 +02:00
Andy Wingo
f7080facb4
Refactor to move temp register acquire to core
2019-05-09 16:02:39 +02:00
Andy Wingo
570f361c6c
Remove Sparc support
...
Sadly, this is a dead architecture, without an official Debian port.
Rest in peace!
2019-05-08 21:44:03 +02:00
Andy Wingo
ced3c42dee
Remove hppa support
...
This is a dead architecture without an official Debian port.
2019-05-08 21:44:03 +02:00
Andy Wingo
d51bd7d592
Remove alpha support
...
This is a dead architecture without an official Debian port.
2019-05-08 21:44:01 +02:00
Andy Wingo
80f79fca93
Remove ia64 (itanium) support
...
This is a dead architecture without an official Debian port.
2019-05-08 21:37:40 +02:00
Andy Wingo
d6eea0b499
Attempt to pop x87 stack
2019-04-29 17:15:46 +02:00
Andy Wingo
57b31f1111
Stack alignment is 16 even on x86-32
2019-04-29 16:12:38 +02:00
Andy Wingo
483e880b10
Fix byte stores on x86-32
...
Also on x86-32, use RBX as the tmp register, as it is byte-addressable.
2019-04-28 18:42:55 +02:00
Andy Wingo
2a5d315ab9
Unget temp xpr after mem->mem addend fixup
2019-04-28 16:21:09 +02:00
Andy Wingo
04cd8874de
Stack alignment takes saved return address into account
2019-04-28 12:37:19 +02:00
Andy Wingo
7d4a286d7e
Merge branch 'x86-32-ci' into 'master'
...
Add 32-bit x86 to CI
See merge request wingo/lightening!1
2019-04-28 10:04:42 +00:00
Andy Wingo
eae25f464a
Add x86-32 tests to default test target
2019-04-28 12:01:30 +02:00
Andy Wingo
59ead16eab
Mark test files as precious to prevent them from being deleted by make
2019-04-28 10:47:52 +02:00
Andy Wingo
d8bdefbd2f
Add test for JIT callee with many args
2019-04-27 23:11:13 +02:00
Andy Wingo
d11864f098
Add {enter,leave}_jit_abi calls in tests
...
This saves and restores RBP on x86-32.
2019-04-27 22:54:38 +02:00
Andy Wingo
81ba8830a2
Fix ABI of arg to extr_d_f test
2019-04-27 22:36:06 +02:00
Andy Wingo
d617315fdb
Fix jit_leave_jit_abi to pop correct registers
...
Also relax stack alignment on 32-bit x86
2019-04-27 22:27:39 +02:00
Andy Wingo
e0cf51e482
Small bug fixes for ia32
2019-04-26 17:41:43 +02:00
Andy Wingo
42bc762d26
Add facility to enter and leave JIT ABI
...
This allows us to save and restore callee-save temporaries, i.e. RBP on
32-bit x86. Otherwise it's a disaster shuffling stack arguments using
temporaries.
2019-04-26 17:28:29 +02:00
Andy Wingo
9906cd5f84
Remove most __X64_32 code
...
The x32 ABI (i.e., amd64 with 32-bit pointers) is mostly a C language
question. From a JIT perspective it mostly looks just like amd64. We
can fix any differences in a followup, but x32 is also a pretty dead
ABI, so I feel OK with this.
2019-04-26 17:19:16 +02:00
Andy Wingo
24950994ef
Simplify 64/32 concerns in x86-cpu.c
...
* lightening/x86-cpu.c (il): Take a uint64_t. It's only called this
way.
(imovi): Remove some x64_32 conditions; they seem bogus.
2019-04-26 16:13:29 +02:00
Andy Wingo
fe34e3cdf1
Make jit_cpu private
2019-04-26 16:09:06 +02:00
Andy Wingo
19da79c8c1
Fix 32-bit movi_d
...
* lightening/x86-sse.c (movi_d): Fix combining of low and high double
halves.
2019-04-26 15:57:25 +02:00
Andy Wingo
b116314591
Fix compile warnings for 32-bit tests
2019-04-26 15:56:08 +02:00
Andy Wingo
e9d1567f7f
Use jit_word_t for register-sized values instead of intmax_t
2019-04-26 15:00:29 +02:00
Andy Wingo
bab1f40b5e
Fix lightening to compile on 32-bit x86
2019-04-26 14:44:09 +02:00
Andy Wingo
89fd69fc00
Account for saved return address when locating args
...
Also, fix alignment to be in bytes rather than bits. Oops!
2019-04-26 14:38:29 +02:00
Andy Wingo
ac972e1dba
Inline some internal definitions into backend-specific files
2019-04-26 14:37:35 +02:00
Andy Wingo
04d89a7ce2
Implement reloc shortening, and remove unused functionality
2019-04-26 12:40:44 +02:00
Andy Wingo
796f263ed8
Remove unused jit_epilog definition
2019-04-26 11:40:06 +02:00
Andy Wingo
dc28ac03c1
Make jit_align_stack and jit_shrink_stack public
2019-04-26 10:04:04 +02:00
Andy Wingo
c54c248bc9
Track frame size to more reliably align stack before calls
2019-04-26 09:56:46 +02:00