Commit Graph

22239 Commits

Author SHA1 Message Date
Károly Balogh
aea0f3e667 m68k: build fix (premature commits are the root of all evil too)
git-svn-id: trunk@42966 -
2019-09-09 07:47:34 +00:00
Károly Balogh
d25820b830 m68k: added CPUM68K_HAS_BYTEWORDMATH and CPUM68K_HAS_INDEXWORD capabilities
git-svn-id: trunk@42964 -
2019-09-08 22:43:34 +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
Károly Balogh
353fc13257 m68k: cleanup of the ancient mess from cgsize2subreg
git-svn-id: trunk@42949 -
2019-09-08 13:55:19 +00:00
Károly Balogh
fa1203029f m68k: use cpu_capabilities when deciding to inject scaling into a ref. also allow scaling in more cases.
git-svn-id: trunk@42947 -
2019-09-08 13:37:22 +00:00
Károly Balogh
50fe8f70f5 m68k: make sure we're not trying to allocate a subregister for float paras when R_SUBWHOLE <> R_SUBNONE
git-svn-id: trunk@42946 -
2019-09-08 13:34:39 +00:00
Károly Balogh
16fc8c8d9a m68k: added some handling for the explicit precision FPU instructions in the spilling and optimizer. fixed a_fsabs and a_fdabs names
git-svn-id: trunk@42943 -
2019-09-08 09:21:17 +00:00
pierre
5d9771d141 Suppress range check/invalid typecast errors when compiling with -CriotR option
git-svn-id: trunk@42942 -
2019-09-07 21:14:12 +00:00
florian
9e5cbce6be * fix tcgavr.g_flags2reg for sizes > 1 byte
git-svn-id: trunk@42938 -
2019-09-07 20:19:12 +00:00
Károly Balogh
fd1d227175 m68k: more refactoring for fpu_capabilities instead of hardwired fpu types. 68040 and 68060 fpu types should now work
git-svn-id: trunk@42929 -
2019-09-06 07:56:06 +00:00
Károly Balogh
db2875ceba m68k: added the remaining instructions with explicit rounding precision. fixed fsflmul to be fsglmul (this is also typo in the original 68k PRM)
git-svn-id: trunk@42928 -
2019-09-06 07:25:45 +00:00
Károly Balogh
2a87b885b1 m68k: added the most important FPU instructions with explicit rounding precision (eg. FSADD/FDADD)
git-svn-id: trunk@42927 -
2019-09-05 21:51:36 +00:00
Károly Balogh
5eee29e5d1 m68k: refactor some code to not fail when the tasmop set will be bigger than 256 elements
git-svn-id: trunk@42926 -
2019-09-05 21:49:27 +00:00
Károly Balogh
de095c4631 m68k: refactoring to use fpu_capabilities at more places instead of hardwiring certain fpu types
git-svn-id: trunk@42925 -
2019-09-05 21:43:51 +00:00
florian
0c6f7321bf + AArch64: FoldShiftProcess optimization
git-svn-id: trunk@42924 -
2019-09-05 20:15:56 +00:00
Károly Balogh
36286441b2 m68k: try to optimize realconst operands into B/W/L sized integer operands. these are shorter to encode - which almost always means faster on m68k
git-svn-id: trunk@42923 -
2019-09-05 19:32:57 +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
a5a87fa84c + 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
+ small command line tool for quick creating of vfp register list in a64reg.dat

git-svn-id: trunk@42916 -
2019-09-03 20:59:13 +00:00
pierre
0e02b4f58c Fix problems with big endian systems without 80-bit floating point support
git-svn-id: trunk@42906 -
2019-09-02 16:00:15 +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
pierre
0fa280f4c2 Fix code generated in tarmnotnode.second_boolean
git-svn-id: trunk@42860 -
2019-08-28 07:38:35 +00:00
pierre
d29a6de437 Avoid possible warning about uninitialized srsym variable
git-svn-id: trunk@42857 -
2019-08-27 12:15:03 +00:00
florian
fd20dc1086 * support unique copies of currencies which are handles by torddef, resolves #36013
git-svn-id: trunk@42837 -
2019-08-26 19:31:48 +00:00
Jonas Maebe
a6a6c2cb07 * fixed size of base stack frame for ELFv2
git-svn-id: trunk@42835 -
2019-08-26 19:26:14 +00:00
Károly Balogh
0ef47f6426 m68k: tabs 2 spaces, no functional changes
git-svn-id: trunk@42829 -
2019-08-26 13:08:39 +00:00
Jonas Maebe
956aab3be0 * implement support for the Objective-C "related result type" convention
as described on
    http://releases.llvm.org/8.0.0/tools/clang/docs/LanguageExtensions.html#objective-c-features
    (rest of mantis #35994)

git-svn-id: trunk@42816 -
2019-08-25 15:23:53 +00:00
Jonas Maebe
bc7b90185f * when searching for a procsym in an Objective-C category for an objcclass,
try to find the procsym in the category of the objcclass that is closest
    related to the original objcclass (e.g.
     NSMutableDictionary.dictionaryWithContentsOfFile() -> prefer the
     dictionaryWithContentsOfFile() from NSMutableDictionaryCreation to the
     one from NSDictionaryCreation (part of mantis #35994)

git-svn-id: trunk@42815 -
2019-08-25 15:23:48 +00:00
Károly Balogh
d29f44e1c7 m68k: rework of the inline nodes to use fpu_capabilities. added fast path for round/trunc (enabled for fastmath only)
git-svn-id: trunk@42814 -
2019-08-25 12:12:15 +00:00
svenbarth
b0b2218cca * fix for Mantis #35981: ensure that the "specialize" token is only really used in non-Delphi modes
git-svn-id: trunk@42776 -
2019-08-23 14:59:20 +00:00
Károly Balogh
3662afe93b m68k: added more cpu capabilities. changed the CG at a few places to actually use them
git-svn-id: trunk@42763 -
2019-08-22 15:38:08 +00:00
pierre
5ed7bd35df Update all trunk/fpcsrc Makefile's after commit 42749
git-svn-id: trunk@42750 -
2019-08-20 15:58:10 +00:00
nickysn
94e22f1262 + added a getter for the NewExeSegmentFlags property, that returns the
nesfHasRelocationData flag according to whether the Relocations list is
  non-empty

git-svn-id: trunk@42746 -
2019-08-20 13:49:43 +00:00
nickysn
e7d590724a + added and implemented the TNewExeRelocationList class
git-svn-id: trunk@42744 -
2019-08-20 11:42:07 +00:00
pierre
8fd0a27875 Avoid range check error for avr/i8086 CPU by changing local variable dist type to asizeuint
git-svn-id: trunk@42741 -
2019-08-19 20:22:22 +00:00
Károly Balogh
4936358bee m68k: fpu capabilities support
git-svn-id: trunk@42739 -
2019-08-19 15:07:22 +00:00
Jonas Maebe
14a7429e19 * factored out inlinenode check whether it may have a side effect
o also added register assert as having a side-effect (if asserts are
     enabled)

git-svn-id: trunk@42728 -
2019-08-18 15:55:03 +00:00
florian
5d1d9858d1 + VMovVMov2VMov optimization
git-svn-id: trunk@42727 -
2019-08-18 12:09:03 +00:00
florian
3d5ab366e1 * fix RemoveSuperfluousVMov if the VMov destination reg is an integer register, resolved #35978
git-svn-id: trunk@42726 -
2019-08-18 11:28:39 +00:00
florian
4f38f12815 -- Zusammenführen von r42706 bis r42724 in ».«:
U    tests/utils/avx/avxopcodes.pas
U    compiler/x86/aasmcpu.pas
U    compiler/x86/rax86.pas
-- Aufzeichnung der Informationen für Zusammenführung von r42706 bis r42724 in ».«:
 U   .

git-svn-id: trunk@42725 -
2019-08-18 11:18:41 +00:00
tg74
9baf452681 Bugfix GATHER/SCATTER memref
git-svn-id: branches/tg74/avx512merge@42723 -
2019-08-18 04:39:36 +00:00
florian
9230ae5aab o overhaul-base.patch by J. Gareth Moreton, base for further patches
+ some inline directives added
  + some functions exported from units

git-svn-id: trunk@42722 -
2019-08-17 16:14:22 +00:00
pierre
970ce7f243 Avoid error with -CR option in tobjectdef.vmt_def method
git-svn-id: trunk@42711 -
2019-08-16 16:31:08 +00:00
florian
ba203c0564 + x86 makes use of fpu_capabilities
* moved CPUX86_HAS_AVXUNIT to FPUX86_HAS_AVXUNIT
+ mm register allocator can be initialized with 32 mm registers of AVX512

git-svn-id: trunk@42707 -
2019-08-16 11:35:03 +00:00
svenbarth
44bfa98a30 * fix for Mantis #35955: when the element of an array constructer requires an operator for conversion we don't let the caller of compare_defs_ext know that, instead we simply say that some conversion is required and let the typecheck handler deal with the element wise conversion
+ added test

git-svn-id: trunk@42700 -
2019-08-15 14:33:00 +00:00