Jonas Maebe
1de8e53edd
+ AArch64 jump table support
...
git-svn-id: trunk@29964 -
2015-02-23 22:55:42 +00:00
Jonas Maebe
d4d9e361fc
+ AArch64 optimized version of a_load_regconst_subsetreg_intern()
...
git-svn-id: trunk@29963 -
2015-02-23 22:55:39 +00:00
Jonas Maebe
555194a67b
+ AArch64 optimized version of a_load_subsetreg_subsetreg()
...
git-svn-id: trunk@29962 -
2015-02-23 22:55:36 +00:00
Jonas Maebe
602853d40b
+ AArch64 optimized version of a_load_subsetreg_reg()
...
git-svn-id: trunk@29961 -
2015-02-23 22:55:33 +00:00
Jonas Maebe
c9de3b2ecd
* use the zero register for a_load_const_ref(0)
...
git-svn-id: trunk@29960 -
2015-02-23 22:55:29 +00:00
Jonas Maebe
07455fb889
+ inlined versions of concatcopy
...
git-svn-id: trunk@29959 -
2015-02-23 22:55:26 +00:00
Jonas Maebe
e6ab39765d
* add restrictions for loaded/stored registers in case of references
...
with write-back
git-svn-id: trunk@29958 -
2015-02-23 22:55:23 +00:00
Jonas Maebe
65c2c68b5f
* call the AArch64 compiler ppca64 instead of ppcaarch64 (less typing)
...
git-svn-id: trunk@29957 -
2015-02-23 22:55:20 +00:00
Jonas Maebe
14bd77f11c
* removed ARM copy/paste stuff
...
git-svn-id: trunk@29956 -
2015-02-23 22:55:17 +00:00
Jonas Maebe
ff73d97e7f
* temporary workaround for writing INS/UMOV operands, as these require
...
vector subregisters that we cannot represent yet. We only have to
load/store lower single/double precision contents via them though,
so reuse SUBMMS/SUBMMD for now.
git-svn-id: trunk@29955 -
2015-02-23 22:55:14 +00:00
Jonas Maebe
bc5a33ffac
* fixed flags_to_cond() and inverse_cond() for C_GE
...
git-svn-id: trunk@29954 -
2015-02-23 22:55:11 +00:00
Jonas Maebe
42aca4db46
* pass managed function result addresses as a hidden first parameter instead
...
of in X8, as the ABI allows this deviation (see added comments) and it's
required for some internal RTL code to call interface methods via RTTI
git-svn-id: trunk@29953 -
2015-02-23 22:55:08 +00:00
Jonas Maebe
bb1274a8ee
* make DoPipe() a method of TExternalAssembler and use it in
...
TAArch64AppleAssembler to determine whether we have to add extra
parameters to support assembling via a pipe ("as" is a symlink to
clang for Arch64 on OS X, and needs to be explicitly told its going to
receive assembler code from standard input)
git-svn-id: trunk@29952 -
2015-02-23 22:55:05 +00:00
Jonas Maebe
1edd3ac511
* support for the "RaisePending" parameter of RaiseExceptions on AArch64
...
git-svn-id: trunk@29951 -
2015-02-23 22:55:02 +00:00
Jonas Maebe
3d01d4ceb1
* regenerated with Darwin/AArch64 support
...
git-svn-id: trunk@29950 -
2015-02-23 22:54:53 +00:00
Jonas Maebe
fcfa8f3826
+ fpcres (Darwin/)AArch64 support
...
o also use $elseif to stop endless $endif sequence at the end
git-svn-id: trunk@29949 -
2015-02-23 22:54:37 +00:00
Jonas Maebe
bff3feae7b
+ AArch64 support
...
git-svn-id: trunk@29948 -
2015-02-23 22:54:34 +00:00
Jonas Maebe
e6d948470e
* skip test in general for 64 bit cpus
...
git-svn-id: trunk@29947 -
2015-02-23 22:54:31 +00:00
Jonas Maebe
9521905102
+ added aarch64 support
...
git-svn-id: trunk@29946 -
2015-02-23 22:54:28 +00:00
Jonas Maebe
c6daaa28d0
* enable all Objective-C tests for Darwin/AArch64
...
git-svn-id: trunk@29945 -
2015-02-23 22:54:24 +00:00
Jonas Maebe
2c6e16e49e
* accesses to the ISA pointer are guaranteed to be aligned -> ensure the
...
code generator knows this
git-svn-id: trunk@29944 -
2015-02-23 22:54:21 +00:00
Jonas Maebe
2340da410c
* we cannot directly load the ISA pointer on AArch64, we have to call the
...
class instance method
(http://www.sealiesoftware.com/blog/archive/2013/09/24/objc_explain_Non-pointer_isa.html )
git-svn-id: trunk@29943 -
2015-02-23 22:54:18 +00:00
Jonas Maebe
f1fb880f18
* fixed debug register values for vector registers
...
git-svn-id: trunk@29942 -
2015-02-23 22:54:15 +00:00
Jonas Maebe
e2d21a5716
* reuse simple memory paralocs, since we always setup a stack frame and
...
we can address them via the frame pointer
git-svn-id: trunk@29941 -
2015-02-23 22:54:12 +00:00
Jonas Maebe
a81e81c775
+ override second_int_to_bool(), because the generic version assumes that
...
OP_OR sets the flags
git-svn-id: trunk@29940 -
2015-02-23 22:54:09 +00:00
Jonas Maebe
966a851997
+ a_loadmm_intreg_reg() and a_loadmm_reg_intreg() implementations
...
git-svn-id: trunk@29939 -
2015-02-23 22:54:06 +00:00
Jonas Maebe
41fba0c4f7
* switched to using the stack pointer as base register for the temp allocator
...
instead of the frame pointer register:
1) we exactly know the offsets of the temps from the stack pointer
after pass 1 (based on the require parameter stack size for called
routines), while we don't know it for the frame pointer (it depends
on the number of saved registers)
2) temp offsets from the stack pointer are positive while those from
the frame pointer are negative, and we can directly encode much
bigger positive offsets in the instructions
o move the stack pointer register to a virtual register in
loadparentfpn, because many instructions cannot directly operate
on/with the stack pointer
o add the necessary register interference edges for the stack pointer
register
git-svn-id: trunk@29938 -
2015-02-23 22:54:03 +00:00
Jonas Maebe
5bb89cc2f0
* keep track of the reason why a loadparentfpnode has been created: to
...
load a value from a nested context, or to pass a context to a nested
routine. In case a target uses both the stack and frame pointer, this
difference can matter.
git-svn-id: trunk@29937 -
2015-02-23 22:53:59 +00:00
Jonas Maebe
f69d2fe61d
* AArch64 doesn't use *stret routines for Objective-C dispatching, because it
...
doesn't need special code for returning a struct by reference
git-svn-id: trunk@29936 -
2015-02-23 22:53:56 +00:00
Jonas Maebe
f6e90ae9bf
* include ncgobjc in cpunode for aarch64
...
git-svn-id: trunk@29935 -
2015-02-23 22:53:53 +00:00
Jonas Maebe
5a8959381c
+ Darwin/AArch64 support
...
git-svn-id: trunk@29934 -
2015-02-23 22:53:50 +00:00
Jonas Maebe
f54ea490dd
* fixed writing extended registers in references
...
git-svn-id: trunk@29933 -
2015-02-23 22:53:47 +00:00
Jonas Maebe
7fc9d775df
+ support for @page and @pageoffs addressing on AArch64: these are PIC
...
references that directly take the address of a symbol, rather than
of its GOT entry
o use these addressing modes to access local symbols
git-svn-id: trunk@29932 -
2015-02-23 22:53:43 +00:00
Jonas Maebe
706a0cffec
* regenerated with AArch64 support
...
git-svn-id: trunk@29931 -
2015-02-23 22:53:34 +00:00
Jonas Maebe
70fc5dcee3
* don't pass TP-style objects as HFA or similar, because the calling
...
convention code is triggered before the object structure has been
finalised, so the result can be different in the interface and
implementation. To solve this, something like r20161 has to be
implemented for TP-style objects
git-svn-id: trunk@29930 -
2015-02-23 22:53:29 +00:00
Jonas Maebe
620af1732a
* support for AArch64 branch forwarding
...
o don't forward cb(n)z, as we don't check the maxiumum offsets
o don't forward conditional branches to global labels, as they also have a
limited range and at least the OS X toolchain doesn't support this
git-svn-id: trunk@29929 -
2015-02-23 22:53:26 +00:00
Jonas Maebe
55bc5d7972
* completed TAoptBaseCpu.RegModifiedByInstruction()
...
git-svn-id: trunk@29928 -
2015-02-23 22:53:23 +00:00
Jonas Maebe
6d0f0f430d
* added Darwin/AArch64 support to the objc unit
...
git-svn-id: trunk@29927 -
2015-02-23 22:53:20 +00:00
Jonas Maebe
28a713494c
* fixed/completed spilling_get_operation_type
...
+ implemented spilling_get_operation_type_ref
git-svn-id: trunk@29926 -
2015-02-23 22:53:17 +00:00
Jonas Maebe
5041354b8e
* recognise AArch64 PIC references
...
git-svn-id: trunk@29925 -
2015-02-23 22:53:14 +00:00
Jonas Maebe
62fb05b7c4
+ Darwin/AArch64 test object files
...
git-svn-id: trunk@29924 -
2015-02-23 22:53:11 +00:00
Jonas Maebe
5da379ab3f
+ inlined support for round/trunc on AArch64
...
git-svn-id: trunk@29923 -
2015-02-23 22:53:07 +00:00
Jonas Maebe
0203f5e32f
* search iphoneall rather than cocoaall for Cocoa types on Darwin/AArch64
...
git-svn-id: trunk@29922 -
2015-02-23 22:53:04 +00:00
Jonas Maebe
1aee714c36
* updated PIC comment for Darwin/AArch64
...
git-svn-id: trunk@29921 -
2015-02-23 22:53:01 +00:00
Jonas Maebe
572742e546
* use Darwin-style section syntax for Darwin/AArch64
...
git-svn-id: trunk@29920 -
2015-02-23 22:52:58 +00:00
Jonas Maebe
30b0f830c3
* fixed std_param_align
...
o also updated copyright and architecture name
git-svn-id: trunk@29919 -
2015-02-23 22:52:55 +00:00
Jonas Maebe
f9647b661f
+ Darwin/AArch64 test object files
...
git-svn-id: trunk@29918 -
2015-02-23 22:52:52 +00:00
Jonas Maebe
851b3499b4
* aarch64 only/always uses its vector fpu
...
git-svn-id: trunk@29917 -
2015-02-23 22:52:48 +00:00
Jonas Maebe
5fff543c73
- removed unused taicpu.insoffset field
...
git-svn-id: trunk@29916 -
2015-02-23 22:52:45 +00:00
Jonas Maebe
71bd4e23d9
+ taicpu.op_reg_reg_const_const() and taicpu.op_reg_reg_reg_cond() methods
...
git-svn-id: trunk@29915 -
2015-02-23 22:52:42 +00:00