florian
e1e8986462
* patch by J. Gareth Moreton, issue #36271 , part 3: support for the other architectures
...
git-svn-id: trunk@43441 -
2019-11-10 16:11:40 +00:00
florian
688c7d439f
o AArch64:
...
* properly initialize FPU
* FMOV cannot throw an FPU exception
git-svn-id: trunk@43167 -
2019-10-11 21:55:48 +00:00
Jonas Maebe
4deb62ad87
* fix for "ldr label" support in AArch64 assembler reader (r42988)
...
git-svn-id: trunk@43016 -
2019-09-15 17:26:25 +00:00
svenbarth
61642ffaa4
* Aarch64 asm reader: explicitely set the refaddr for local labels
...
git-svn-id: trunk@42989 -
2019-09-13 20:38:25 +00:00
svenbarth
ef154fb454
* Aarch64 asm reader: LDR instruction allows labels as well
...
git-svn-id: trunk@42988 -
2019-09-13 20:38:22 +00:00
florian
fa2e751f9f
+ AArch64: implementation of taarch64casenode.genlinearlist
...
git-svn-id: trunk@42973 -
2019-09-10 18:46:56 +00:00
florian
58eef0a5aa
+ AAarch64: TCpuAsmOptimizer.OptPass1Shift makes use of RemoveSuperfluousMove
...
git-svn-id: trunk@42971 -
2019-09-09 20:59:55 +00:00
florian
ce9e1a3419
+ AArch64: FoldShiftProcess fixed
...
git-svn-id: trunk@42963 -
2019-09-08 20:53:43 +00:00
florian
c3c3e99c64
+ AArch64: implemented TCpuAsmOptimizer.OptPass1Data
...
git-svn-id: trunk@42962 -
2019-09-08 20:53:43 +00:00
florian
bc473508ff
* AArch64: several issues with taicpu.spilling_get_operation_type fixed
...
git-svn-id: trunk@42961 -
2019-09-08 20:53:42 +00:00
florian
cc49d256ea
+ AArch64: CMPB.E/NE2CBNZ/CBZ optimization
...
git-svn-id: trunk@42960 -
2019-09-08 20:53:41 +00:00
florian
0c6f7321bf
+ AArch64: FoldShiftProcess optimization
...
git-svn-id: trunk@42924 -
2019-09-05 20:15:56 +00:00
florian
a019536cd5
* avoid that -0.0 is handled by the eor optimization
...
git-svn-id: trunk@42921 -
2019-09-04 20:45:24 +00:00
florian
8ffb72ddd0
* another missing part of r42916 ...
...
git-svn-id: trunk@42919 -
2019-09-04 16:36:54 +00:00
florian
69786ffe73
somehow committing went wrong, second part of last commit:
...
+ AArch64: support for vX.8b/vX.16b register names
+ support for more than 256 registers in the register dat files
- removed totherregisterset
+ AArch64: use vmov to load immediates if possible
+ AArch64: use eor to clear mm registers
git-svn-id: trunk@42917 -
2019-09-03 21:07:33 +00:00
florian
078595be4c
+ support for software floating point exception handling on AArch64 (-CE)
...
git-svn-id: trunk@42891 -
2019-09-01 17:26:11 +00:00
florian
9c00a8b616
+ FMA support for aaarch64
...
git-svn-id: trunk@42885 -
2019-08-31 19:37:17 +00:00
Jonas Maebe
3fee990218
* on Mach-O, PECOFF and ELF platforms, write local symbols as hidden/
...
private_extern (or plain global in case of PECOFF, as the effect is
the same there): visible across object files, but they become local
when linked into a binary/library. This enables cross-unit inlining
of functions accessig implementation-only symbols.
git-svn-id: trunk@42340 -
2019-07-07 21:33:43 +00:00
pierre
828a248287
Systematically include fpcdefs.inc at sart of all units used by compiler
...
git-svn-id: trunk@42322 -
2019-07-03 13:35:05 +00:00
Jonas Maebe
a0e35fd1bc
* synchronised with trunk till r42118
...
git-svn-id: branches/debug_eh@42119 -
2019-05-25 13:19:06 +00:00
Jonas Maebe
77658b925b
* disable regular array -> dynamic array type coversion support unless
...
{$modeswitch arraytodynarray} is active (mantis #35576 )
o changed compiler to compile without this modeswitch
o added the modeswitch to a test that depends on it
git-svn-id: trunk@42118 -
2019-05-25 12:31:32 +00:00
Jonas Maebe
1b6425176b
* synchronised with trunk till r42049
...
git-svn-id: branches/debug_eh@42050 -
2019-05-12 18:44:05 +00:00
Jonas Maebe
281b3ad276
* fix case completeness and unreachable code warnings in compiler that would
...
be introduced by the next commit
git-svn-id: trunk@42046 -
2019-05-12 14:29:03 +00:00
Jonas Maebe
dc2cbf8018
* synchronised with trunk till r41725
...
git-svn-id: branches/debug_eh@41726 -
2019-03-17 15:25:31 +00:00
Jonas Maebe
d34e0b091b
* fixed aarch64 shifterop parsing in inline assembly
...
git-svn-id: trunk@41650 -
2019-03-09 16:11:31 +00:00
Jonas Maebe
a079e5fa80
* synchronised with trunk till r41449
...
git-svn-id: branches/debug_eh@41450 -
2019-02-24 20:01:53 +00:00
Jonas Maebe
07bd4ba517
* let all the case code generation work with tconstexprint instead of aint,
...
so it also works for 32 bit targets and a high level code generator
(where aint is still 32 bit, but 64 bit operations are not decomposed)
git-svn-id: trunk@41441 -
2019-02-24 19:58:37 +00:00
Jonas Maebe
ac883969a9
* synchronised with trunk till r41423
...
git-svn-id: branches/debug_eh@41424 -
2019-02-23 17:08:03 +00:00
Jonas Maebe
8b9e90dc7a
* keep track of whether a routine has a C-style variadic parameter in the
...
procoptions even when it's through an array-of-const parameter
* always call create_varargs_paraloc_info() instead of create_paraloc_info()
in the former case, even when no varargs parameters are specified (because
on some platforms even some non-variadic parameters need to be passed
differently, such as on ARM with gnueabihf)
git-svn-id: trunk@41420 -
2019-02-23 15:42:45 +00:00
Jonas Maebe
1a559f5c60
* move the homogenous float aggregate determination function to a common
...
unit for ARM and AArch64
git-svn-id: trunk@41419 -
2019-02-23 15:42:39 +00:00
yury
382d5060a0
* aarch64: According to ARM64 ABI, function's arguments and the result are not required to be sign/zero extended to a full register size. Obey this rule for all targets except iOS where sign/zero extension is required.
...
git-svn-id: trunk@41412 -
2019-02-22 17:59:54 +00:00
Jonas Maebe
f26ac9026e
* enable LLVM support Linux/AArch64
...
o also put the regular function result before the partfpstruct parameter
git-svn-id: branches/debug_eh@40577 -
2018-12-16 20:46:44 +00:00
Jonas Maebe
b41cd1eb6a
* synchronised with trunk till r40575
...
git-svn-id: branches/debug_eh@40576 -
2018-12-16 20:45:55 +00:00
Jonas Maebe
ac8411f3cf
* pass dynamic array parameters of cdecl routines by value on AArch64
...
(like on onther platforms)
o it was passed by reference as a side effect of the fact arrays in C are
pointers, but a dynamic array already is a pointer
git-svn-id: trunk@40573 -
2018-12-16 20:44:35 +00:00
Jonas Maebe
95171a1e22
* initialise cgpara with valid data for the C-style "array of const" para
...
(necessary for the LLVM backend)
git-svn-id: trunk@40571 -
2018-12-16 20:44:28 +00:00
Jonas Maebe
820d2f7135
* support OS_32/OS_64 in AArch64 cgsize2subreg() for MM registers (can happen
...
for records with floating point fields with the LLVM code generator)
git-svn-id: trunk@40570 -
2018-12-16 20:44:24 +00:00
Jonas Maebe
ff002e2664
* set paralocations correctly for LLVM/AArch (must be register-type instead
...
of parameter-type based)
git-svn-id: trunk@40568 -
2018-12-16 20:44:18 +00:00
Jonas Maebe
6b58185bda
* fixed shifval for big endian (bits instead of bytes)
...
git-svn-id: trunk@40567 -
2018-12-16 20:44:15 +00:00
Jonas Maebe
6e453a1477
* fixed paraloc def when changing the size to OS_32
...
git-svn-id: trunk@40566 -
2018-12-16 20:44:12 +00:00
Jonas Maebe
52fec8a94a
* when optimising subsetreg moves for aarch64, take into account the fact
...
that the subsetreg itself can be 32 or 64 bit (mantis #33607 )
git-svn-id: trunk@40512 -
2018-12-09 14:46:52 +00:00
Jonas Maebe
4cd6f59bc3
* changed create_hlcodegen into a procvar, so that we don't have to insert
...
hlcgllvm in the uses clause of every unit that calls create_hlcodegen
o prevents dependency cycles that can cause llvm codegen units to init
before the cpu variants, which is bad since the llvm versions have to
override the cpu variants in their init code (+ added checks in the
init code that they are in fact initialised later)
git-svn-id: branches/debug_eh@40410 -
2018-11-29 21:31:15 +00:00
Jonas Maebe
bfc7c58a69
* synchronised with trunk till r40348
...
git-svn-id: branches/debug_eh@40349 -
2018-11-18 12:01:50 +00:00
florian
9b0ff05ee8
- get rid of MaxOps, it is redundant with max_operands
...
* MatchOpType with three operands is only available of max_operands>2
git-svn-id: trunk@40190 -
2018-11-02 21:32:29 +00:00
yury
4357caaad8
* Removed unused local vars.
...
git-svn-id: trunk@40183 -
2018-11-02 18:44:29 +00:00
Jonas Maebe
8555ec1438
+ fpc_eh_return_data_regno() intrinsic to get the return register numbers
...
for the Dwarf EH exception handler result
git-svn-id: branches/debug_eh@40070 -
2018-10-28 18:16:38 +00:00
florian
112fb4613b
* take care of the fact that x and w registers overlap when carrying out the Str/LdrAdd/Sub2Str/Ldr Postindex optimization
...
git-svn-id: trunk@40023 -
2018-10-24 17:38:51 +00:00
florian
0a5e6d29cb
+ implement assembler optimization Str/LdrAdd/Sub2Str/Ldr Postindex done
...
git-svn-id: trunk@40017 -
2018-10-23 20:41:27 +00:00
florian
379c2fe821
* cleanup debug code
...
git-svn-id: trunk@40016 -
2018-10-22 21:27:36 +00:00
florian
f27fee5566
+ make use of the BFI instruction in tcgaarch64.a_load_ref_reg_unaligned
...
git-svn-id: trunk@40015 -
2018-10-22 21:23:48 +00:00
pierre
92acd38f40
Fix for bug report #34380
...
git-svn-id: trunk@39986 -
2018-10-18 20:21:54 +00:00