Commit Graph

44943 Commits

Author SHA1 Message Date
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
Jonas Maebe
5bdd14e252 + AArch64 cputarg
git-svn-id: trunk@29914 -
2015-02-23 22:52:39 +00:00
Jonas Maebe
558b8967b6 + Aarch64 assembler reader
git-svn-id: trunk@29913 -
2015-02-23 22:52:36 +00:00
Jonas Maebe
96fcf6a12d * added BL and CB(N)Z to is_calljmp()
git-svn-id: trunk@29912 -
2015-02-23 22:52:33 +00:00
Jonas Maebe
aa0e2e9170 * fixed cgsize2subreg and cgsize2subreg for mm subreg sizes
git-svn-id: trunk@29911 -
2015-02-23 22:52:30 +00:00
Jonas Maebe
c2b1ff41d5 - removed ARM leftover tspecialregflag type
git-svn-id: trunk@29910 -
2015-02-23 22:52:27 +00:00
Jonas Maebe
4c504098ca + C_CS/C_CC condition and F_HS/F_LO flag aliases
git-svn-id: trunk@29909 -
2015-02-23 22:52:23 +00:00
Jonas Maebe
6e55e8356e + IP0/IP1 register aliases
git-svn-id: trunk@29908 -
2015-02-23 22:52:20 +00:00
Jonas Maebe
bc9b870943 * cpunode: added ncgcal, corrected ncpuinln -> ncpuinl
git-svn-id: trunk@29907 -
2015-02-23 22:52:17 +00:00
Jonas Maebe
1c8059e30c + dummy AArch64 hlcgcpu
git-svn-id: trunk@29906 -
2015-02-23 22:52:14 +00:00
Jonas Maebe
cfd7bfc8a5 + dummy AArch64 cpupi unit
git-svn-id: trunk@29905 -
2015-02-23 22:52:11 +00:00
Jonas Maebe
d51c87e77b * add Darwin/AArch64 to systems_darwin
git-svn-id: trunk@29904 -
2015-02-23 22:52:07 +00:00
Jonas Maebe
b0112fa63f + initial AArch64 support in systemh.inc, options.pas, version.pas and
psystem.pas

git-svn-id: trunk@29903 -
2015-02-23 22:52:04 +00:00
Jonas Maebe
19f458787f + Darwin/AArch64 support to fpcmake
git-svn-id: trunk@29902 -
2015-02-23 22:52:01 +00:00
Jonas Maebe
f2c0b88e4f * AArch64 compiler building support to top level and compiler Makefile
git-svn-id: trunk@29901 -
2015-02-23 22:51:58 +00:00
Jonas Maebe
44f5f435ba + Darwin/AArch64 support for handling hardware exceptions
git-svn-id: trunk@29900 -
2015-02-23 22:51:54 +00:00
Jonas Maebe
897de78401 + Darwin/AArch64 support in fpmkunit
git-svn-id: trunk@29899 -
2015-02-23 22:51:51 +00:00
Jonas Maebe
7d7953b115 + Darwin/AArch64 support in fcl-res
o disabled writing an addend for the "usedhandles" entry, since we already
     add a relocation for it (and while the result of this relocation
     overwrites the addend on previously supported Darwin targets, it gets
     added on AArch64

git-svn-id: trunk@29898 -
2015-02-23 22:51:47 +00:00