Commit Graph

2720 Commits

Author SHA1 Message Date
Joel Dice
80ce92a999 fix iOS ARM64 build 2014-12-30 17:03:58 -07:00
Joel Dice
c9026a6053 add continuations support for ARM64
Also, replace some preprocessor conditionals with C++ conditionals and
add some todo comments and sample code for future work towards better
ABI compatibility in the JIT compiled code.
2014-12-30 15:31:52 -07:00
Joel Dice
e3ea60fc31 fix ARM64 tails=true build 2014-12-30 09:37:26 -07:00
Joel Dice
76bfcaa8c0 fix ARM64 bootimage=true build
This fixes a problem with atomically updating JIT-compiled static
calls to AOT-compiled code.  It turns out there was also a problem
with the 32-bit ARM code as well, but we never hit it because it is
extremely unlikely that a code address can be loaded with a single
immediate load instruction on 32-bit ARM since it can only handle
numbers with 8 significant bits.  I've fixed that as well.
2014-12-29 18:17:24 -07:00
Joel Dice
8c277e2af8 conditionally compile ARM operations based on TARGET_BYTES_PER_WORD
This fixes the codegen-targets=all build regression.
2014-12-29 14:47:31 -07:00
Joel Dice
d8b32f2c67 update CMakeLists.txt to fix CMake build 2014-12-29 12:25:56 -07:00
Joel Dice
ea0a108cd2 add todo comment regarding integer division 2014-12-29 12:16:55 -07:00
Joel Dice
cdcf173601 format recent changes using clang-format 2014-12-29 12:09:53 -07:00
Joel Dice
e3f50e6d67 fix ARM64 OffsetPromise::value
I must have done a search-and-replace from 4 to TargetBytesPerWord
earlier, but in this case it should have been the instruction size
(4), not the word size.
2014-12-29 11:07:26 -07:00
Joel Dice
98a1fefefc fix offset encoding for strhi instruction 2014-12-29 10:02:30 -07:00
Joel Dice
3e2545e5a7 more ARM64 bugfixes 2014-12-29 08:02:37 -07:00
Joel Dice
67f5461d82 more ARM64 bugfixes 2014-12-24 10:05:20 -07:00
Joel Dice
85fcbb82b3 more ARM64 bugfixes 2014-12-24 08:12:36 -07:00
Joel Dice
78735b35a8 more ARM64 bugfixes, more passing tests 2014-12-23 21:09:43 -07:00
Joel Dice
cbea966d1d various ARM64 JIT bugfixes
Three of the tests now pass.  Yay!
2014-12-23 16:59:04 -07:00
Joel Dice
9158ee39c0 remove 64-bit code from compile-arm.S since it's moved to compile-arm64.S 2014-12-23 16:57:40 -07:00
Joel Dice
b519e245e2 finish implementing operations64.cpp for ARM64 support
This is totally untested so far.
2014-12-22 12:59:27 -07:00
Joshua Warner
a6e88a8faa fix some merge-introduced problems 2014-12-22 12:59:27 -07:00
Joel Dice
123570515f snapshot of ARM64 instruction encoding work
Still not building, but more progress.
2014-12-22 12:59:26 -07:00
Joshua Warner
b3bd58aeff work in progress towards 64-bit ARM JIT support
This won't build, it's just a snapshot of what I have so far.

Conflicts:
	include/avian/codegen/architecture.h
	include/avian/codegen/registers.h
	src/codegen/compiler.cpp
	src/codegen/compiler/event.cpp
	src/codegen/compiler/site.cpp
	src/codegen/compiler/site.h
	src/codegen/registers.cpp
	src/codegen/target/arm/assembler.cpp
	src/codegen/target/arm/registers.h
2014-12-22 12:59:26 -07:00
Joshua Warner
5ce8c2ed54 fix compile-arm64.S when using the apple toolchain 2014-12-10 15:22:02 -07:00
Joshua Warner
a200d4d529 pull in initial version of compile-arm64.S, to fix arm64 build (untested)
Initial implementation courtesy Joel Dice (@dicej)
2014-12-10 15:14:47 -07:00
Joshua Warner
f8b9fcf198 split asm files by architecture (x86 -> i386,x86_64 ; arm -> arm,arm64) 2014-12-10 15:14:18 -07:00
Joshua Warner
8be7b6aeb3 correct THREAD_STATE_THREAD register for arm64 on darwin 2014-12-09 16:34:46 -07:00
Joshua Warner
46e445017e make sure binary-to-object doesn't generate empty objects for invalid format/architecture combinations 2014-12-09 14:56:59 -07:00
Joshua Warner
5e0f7590d9 fix process=interpret build for 'arch=arm64 platform=ios' 2014-12-09 14:56:59 -07:00
Joshua Warner
01de3d9d5c remove lingering 32-count limits on registers, refactor iteration, improve constants, ... 2014-12-09 11:18:00 -07:00
Joshua Warner
a749ba7adc replace (int8_t)Register cast with Register::index() 2014-12-09 08:19:44 -07:00
joshuawarner32@gmail.com
d4045629d7 Remove unnecessary (int8_t) casts in arm backend 2014-12-09 08:19:44 -07:00
Joshua Warner
08f524a106 add convenience (1 << lir::Operand::Type::*) shortcuts (lir::Operand::*Mask) 2014-12-09 08:19:44 -07:00
Joshua Warner
a3ccc94cf5 make BoundedRegisterMask a subclass of RegisterMask 2014-12-09 08:19:44 -07:00
joshuawarner32@gmail.com
6b889b1d78 get rid of implicit Register casts 2014-12-09 08:19:44 -07:00
joshuawarner32@gmail.com
7c24701d37 transition x86 registers to Register instances 2014-12-09 08:19:44 -07:00
joshuawarner32@gmail.com
3bad154602 add back NoRegister and remove some implicit int->Register casts 2014-12-09 08:19:44 -07:00
joshuawarner32@gmail.com
998a5168b7 make Register a class 2014-12-09 08:19:44 -07:00
joshuawarner32@gmail.com
02d1a83ad9 rename lir::Register to lir::RegisterPair 2014-12-09 08:19:43 -07:00
joshuawarner32@gmail.com
10442dc7d6 finish renaming lir:: types (fixup arm) 2014-12-09 08:19:43 -07:00
joshuawarner32@gmail.com
2939480a65 begin renaming lir:: types 2014-12-09 08:19:43 -07:00
joshuawarner32@gmail.com
94761711c9 make RegisterMask a class 2014-12-09 08:19:43 -07:00
joshuawarner32@gmail.com
87465e890b typedef Register and RegisterMask in arm 2014-12-09 08:19:43 -07:00
joshuawarner32@gmail.com
61e79d4f3b typdef Register 2014-12-09 08:19:43 -07:00
Joshua Warner
45cc85829a remove old 32-bit registerMask stuff 2014-12-09 08:19:43 -07:00
Joshua Warner
76197e1f1d typedef RegisterMask 2014-12-09 08:19:43 -07:00
Joshua Warner
a509575a86 remove unused arm utilities / constants 2014-12-09 08:19:43 -07:00
Joshua Warner
f187361889 rename RegisterMask to BoundedRegisterMask 2014-12-09 08:19:43 -07:00
Joshua Warner
1110d3ff50 begin converting to setLowHighRegisterMasks 2014-12-09 08:19:43 -07:00
Joshua Warner
ac72aa8b91 split low/high register mask in OperandMask 2014-12-09 08:19:42 -07:00
Joel Dice
d52d0f6d96 add process=interpret support for Linux/ARM64
This makes all the tests pass for the platform=linux arch=arm64
process=interpret build.  Next step: process=compile support.
2014-11-25 20:02:59 -07:00
Joshua Warner
0b89357968 Merge pull request #368 from dicej/printf-formats
use inttypes.h macros to determine printf format symbols if possible
2014-11-12 10:28:59 -07:00
Joel Dice
1b19dc2c4f use inttypes.h macros to determine printf format symbols if possible
This addresses a recent regression where different versions of
MinGW(-w64) had different opinions about whether to use e.g. %I64d or
%lld to print 64-bit integers on 32-bit platforms.
2014-11-11 14:13:26 -07:00