Jonas Maebe
edef6b2a0a
+ AArch64 Darwin abi declaration
...
git-svn-id: trunk@29861 -
2015-02-23 22:49:52 +00:00
Jonas Maebe
7fbc44471b
* made getparaloc ABI-compliant
...
git-svn-id: trunk@29860 -
2015-02-23 22:49:49 +00:00
Jonas Maebe
232599b429
* made push_addr_param() ABI-compliant
...
git-svn-id: trunk@29859 -
2015-02-23 22:49:46 +00:00
Jonas Maebe
e2c30eb0a1
* return base type from is_hfa()
...
git-svn-id: trunk@29858 -
2015-02-23 22:49:43 +00:00
Jonas Maebe
e7bbb31080
* implemented ret_in_param() according to the ABI
...
git-svn-id: trunk@29857 -
2015-02-23 22:49:40 +00:00
Jonas Maebe
4562731ad9
- removed custom getintparaloc()
...
git-svn-id: trunk@29856 -
2015-02-23 22:49:37 +00:00
Jonas Maebe
60768fcffe
+ implemented is_hfa()
...
git-svn-id: trunk@29855 -
2015-02-23 22:49:34 +00:00
Jonas Maebe
c244daaafb
* don't initialize the fpu register allocator, it is/must not be used on
...
AArch64
git-svn-id: trunk@29854 -
2015-02-23 22:49:31 +00:00
Jonas Maebe
ab186f7892
+ initial implementation of aarch64 code generator
...
git-svn-id: trunk@29853 -
2015-02-23 22:49:28 +00:00
Jonas Maebe
01a6777530
* simplified flag_2_cond array range
...
git-svn-id: trunk@29852 -
2015-02-23 22:49:25 +00:00
Jonas Maebe
51a094a917
+ FP/LR register aliases
...
git-svn-id: trunk@29851 -
2015-02-23 22:49:22 +00:00
Jonas Maebe
e6d7c6a62a
+ is_shifter_const() function to determine whether a constant can be encoded
...
as an immediate operand for a logical operation
git-svn-id: trunk@29850 -
2015-02-23 22:49:19 +00:00
Jonas Maebe
d23299af1e
* fixed cgsize2subreg() for integer registers (we can use 32 and 64 bit
...
registers -> 64 bit values go into 64 bit registers and everything else into
32 bit ones)
git-svn-id: trunk@29849 -
2015-02-23 22:49:15 +00:00
Jonas Maebe
f4ada6cda0
+ aarch64-specific treference fields
...
git-svn-id: trunk@29848 -
2015-02-23 22:49:13 +00:00
Jonas Maebe
123503a4f7
+ GOT-related (Darwin) address modes
...
git-svn-id: trunk@29847 -
2015-02-23 22:49:10 +00:00
Jonas Maebe
0ce5a1de7f
+ IsSimpleRef() function that can be used to determine whether a reference
...
is a valid AArch64 memory reference or not. It returns an enum that says
it's either valid, invalid, or invalid in a way that should trigger an
internal error in case we created the reference ourselves (as opposed to
it coming in via the assembler reader)
git-svn-id: trunk@29846 -
2015-02-23 22:49:07 +00:00
Jonas Maebe
84cea76f7a
* ARM64 -> AArch64
...
git-svn-id: trunk@29845 -
2015-02-23 22:49:04 +00:00
Jonas Maebe
19d47610ad
* added error checking to spilling_create_load/store
...
git-svn-id: trunk@29844 -
2015-02-23 22:49:01 +00:00
Jonas Maebe
92b644a19f
+ taicpu.op_reg_reg_const_shifterop()
...
* made shifterop parameter of taicpu.op_reg_reg_reg_shifterop() const
git-svn-id: trunk@29843 -
2015-02-23 22:48:58 +00:00
Jonas Maebe
f5950ac4cd
+ added remaining aarch64 shift/extension modes
...
git-svn-id: trunk@29842 -
2015-02-23 22:48:55 +00:00
Jonas Maebe
24d3b1cdf6
+ tcgsizep2size[] to convert a tcgsize to its power-of-2 bytesize
...
git-svn-id: trunk@29841 -
2015-02-23 22:48:52 +00:00
Jonas Maebe
a49d386541
+ SW postfix for sign extending a 32 bit integer
...
git-svn-id: trunk@29840 -
2015-02-23 22:48:49 +00:00
Jonas Maebe
ff61aba3fe
* there is no ROR shiftmode on AArch64
...
git-svn-id: trunk@29839 -
2015-02-23 22:48:46 +00:00
Jonas Maebe
cd6e3d5622
* fixed another compilation error
...
git-svn-id: trunk@29838 -
2015-02-23 22:48:43 +00:00
Jonas Maebe
544c8d34ec
+ taicpu.op_reg_const_shifterop() constructor
...
git-svn-id: trunk@29837 -
2015-02-23 22:48:40 +00:00
Jonas Maebe
3cfa91a249
* enable cgsize2subreg() and cgsize2subreg() to differentiate between 32 and
...
64 bit integer registers
git-svn-id: trunk@29836 -
2015-02-23 22:48:37 +00:00
Jonas Maebe
df8b644190
- removed some ARM leftovers
...
git-svn-id: trunk@29835 -
2015-02-23 22:48:33 +00:00
Jonas Maebe
fc235c9400
* fixed warnings
...
git-svn-id: trunk@29834 -
2015-02-23 22:48:30 +00:00
Jonas Maebe
76d779b648
* added SW suffix
...
git-svn-id: trunk@29833 -
2015-02-23 22:48:27 +00:00
Jonas Maebe
c0548cadb0
* added some missing instructions and aliases, reordered them according
...
to how they appear in the ARM ARM
o in particular, added the "unscaled offset" variants of instructions as
separate opcodes (seems simpler than handling them as postfixes)
git-svn-id: trunk@29832 -
2015-02-23 22:48:24 +00:00
Jonas Maebe
f1b619a942
* made (X|W)ZR and (W)SP separate registers, because a number of
...
instructions can use either depending on the encoding
git-svn-id: trunk@29831 -
2015-02-23 22:48:21 +00:00
Jonas Maebe
e8c9b94147
* X29 is callee-saved
...
git-svn-id: trunk@29830 -
2015-02-23 22:48:18 +00:00
Jonas Maebe
3f5e95791b
* use iosxwstr instead of cwstring on Darwin (for iOS 7+ testing)
...
git-svn-id: trunk@29829 -
2015-02-23 22:48:15 +00:00
Jonas Maebe
a56d94230f
+ iosxwstr unit that uses CoreFoundation where possible for the widestring
...
manager routines (in particular for locale-based routines, such as upper/
lowercase), and which falls back to cwstring for functionality not
supported by CoreFoundation (such as converting an UTF-8 string with
illegal sequences to a different encoding)
o this unit is particularly useful on iOS 7 (and 8?), as Apple no
longer includes command line locale information on that platform and
hence locale-dependent libc routines only work with the "C" locale
there)
git-svn-id: trunk@29828 -
2015-02-23 22:48:11 +00:00
Jonas Maebe
67c9d60b72
* factored out the check regarding whether the index of a vecn needs to be
...
loaded into a register because of its size
o by default, also allow if the size is the same as OS_ADDR but with a
different sign
git-svn-id: trunk@29827 -
2015-02-23 22:48:08 +00:00
Jonas Maebe
73a9dc8077
* fixed formatting
...
git-svn-id: trunk@29826 -
2015-02-23 22:48:05 +00:00
Jonas Maebe
f886fe49d6
* only prepend the sysroot path to -Fl paths if these paths are absolute;
...
if they are not, they should be interpreted relative to the current
directory instead (solves compiling tests that depend on a library
when cross-testing for a platform with a sysroot)
git-svn-id: trunk@29825 -
2015-02-23 22:48:02 +00:00
Jonas Maebe
bc3d495285
* extra error checking in gen_load_cgpara_loc
...
git-svn-id: trunk@29824 -
2015-02-23 22:47:59 +00:00
Jonas Maebe
3fe0bd065e
* ARM assembler reader: don't check for postfixes beyond the length
...
of the opcode
git-svn-id: trunk@29823 -
2015-02-23 22:47:56 +00:00
Jonas Maebe
1dd5f579e6
* support record fields with the same name as registers in subscripts in
...
the assembler reader
git-svn-id: trunk@29822 -
2015-02-23 22:47:53 +00:00
Jonas Maebe
504a9d1594
* fixed register sizes in a_load_ref_reg_unaligned()
...
git-svn-id: trunk@29821 -
2015-02-23 22:47:50 +00:00
Jonas Maebe
290e3f5ff8
* fixed assigning one float loc_reference to another of a different size if a
...
platform does not support (hl)cg.a_loadfpu_*, but only (hl)cg.a_loadmm_*
git-svn-id: trunk@29820 -
2015-02-23 22:47:47 +00:00
Jonas Maebe
c764826bb3
* check whether we are explicitly typecasting untypedpointer^ before other
...
cases (that depend on the sizes of the typecast matching) so that we
can (internally) generate typecasts to open array/array of const
git-svn-id: trunk@29819 -
2015-02-23 22:47:44 +00:00
Jonas Maebe
aae879d28a
* also set aktcallnode during tcallnode.pass_1, so that the callparanode
...
pass_1 code can make use of it
git-svn-id: trunk@29818 -
2015-02-23 22:47:41 +00:00
Jonas Maebe
863e81315e
* changed goto usage in tcallnode.pass_typecheck into try/finally (and at
...
the same time solved some issues where "exit" instead of "goto errorexit"
was used)
git-svn-id: trunk@29817 -
2015-02-23 22:47:38 +00:00
Jonas Maebe
68303b8df1
* add explicit check that argument of sizeof(x) is a simple load node (this
...
was already assumed later on)
git-svn-id: trunk@29816 -
2015-02-23 22:47:35 +00:00
Jonas Maebe
b8c8ef8489
* support transfering a cgpara that is stored in multiple paralocs into a
...
single register, by first storing everything consecutively to memory and
then loading it. Required for "homogeneous float aggregates" on AArch64
git-svn-id: trunk@29815 -
2015-02-23 22:47:32 +00:00
Jonas Maebe
e6511bcb33
* support multiple paralocs in a_load_reg_cgpara() by taking a round trip
...
via a_load_ref_cgpara()
git-svn-id: trunk@29814 -
2015-02-23 22:47:29 +00:00
nickysn
9be4e6a0de
* made the registers shown in the registers window depend on the target CPU
...
defines, instead of the host CPU defines (i.e. i386 instead of cpui386, etc)
git-svn-id: trunk@29813 -
2015-02-23 22:17:11 +00:00
florian
35d550c9c6
+ commented directive for easier enabling
...
git-svn-id: trunk@29812 -
2015-02-23 22:11:26 +00:00