Commit Graph

521 Commits

Author SHA1 Message Date
Michael VAN CANNEYT
ccfa38c68e * Dotted RTL compiles 2023-07-27 19:04:03 +02:00
Michael VAN CANNEYT
29c36aa407 * string -> shortstring 2023-07-14 17:26:11 +02:00
Michael VAN CANNEYT
46ca9f437a * Char -> AnsiChar 2023-07-14 17:26:10 +02:00
Rika Ichinose
9249506a2e Shorter i386.inc:fpc_AnsiStr_Decr_Ref. 2023-06-14 21:19:11 +00:00
Rika Ichinose
8e884d9acd Handle Index* / Compare* tail by directly reading last VECSIZE bytes, if there was at least one full vector. 2023-04-03 20:08:56 +00:00
Rika Ichinose
71863e1b2c IndexWord and IndexDWord for i386 without REP SCAS. 2023-03-18 15:44:03 +00:00
Rika Ichinose
98fa292b20 SSE2 Index* and Compare* for i386, chosen at runtime. 2023-03-17 20:42:50 +00:00
florian
ee16fc7b96 * patch by Rika, trivial adjustments to !373, resolves #40172 2023-02-27 22:07:06 +01:00
Rika Ichinose
da12cfc867 Improved CompareWord for i386 and x86_64. 2023-02-25 22:52:38 +00:00
Rika Ichinose
d36e96ea74 Improved CompareDWord for i386 and x86_64. 2023-02-19 18:07:46 +00:00
Rika Ichinose
524589231f Improved CompareByte for i386 and x86_64. 2023-02-05 15:09:01 +00:00
florian
3e6d4bf1cc * new cpu feature tests 2022-11-09 23:09:07 +01:00
florian
12aa48602b + CMOVSupport function 2022-11-08 21:15:11 +01:00
Jonas Maebe
0758aa1143 FPU exception mask: generlised system unit interface 2022-10-17 19:43:01 +00:00
florian
6bbefcae9e * check more cpuid flags in the cpu units 2022-04-04 22:55:05 +02:00
florian
0d03cad279 * i386: make use of *fence instructions 2022-03-07 23:10:31 +01:00
florian
39627cbdfb + AVX512VBMISupport and AVX512VBMI2Support 2022-03-05 20:35:25 +01:00
florian
39836e2d37 - removed superfluous comment 2022-02-12 23:18:53 +01:00
florian
79cf1dd9cf + store also ecx and edx after cpuid call with eax=7
+ test VNNI and BIGALG instructions
2022-02-07 21:22:16 +01:00
florian
2e8321e0fa + routines to test for AVX512VNNI and AVX512BITALG support 2022-01-21 18:23:04 +01:00
Florian Klämpfl
4aebfe97a9 + x86: ADXSupport
+ x86: RDSEEDSupport
2022-01-03 22:51:00 +01:00
Florian Klämpfl
dde8f54ee7 + LZCNTSupport
+ test extended
2021-12-28 17:05:56 +01:00
florian
bff09e8e9e + CPU units: check for SHA support 2021-10-09 16:23:11 +02:00
florian
6c0b79c258 + AVX512*Support functions
* call cpuid with eax=7 only if it is supported by the CPU

git-svn-id: trunk@49601 -
2021-07-11 20:09:57 +00:00
florian
5ca73c61f4 + CPU.BMI1Support and CPU.BMI2Support
git-svn-id: trunk@49582 -
2021-07-07 20:26:59 +00:00
florian
de62cb8b02 * do not execute xend twice which was introduced in r48430
git-svn-id: trunk@48456 -
2021-01-30 18:46:58 +00:00
pierre
5dbd9eb2e0 Introduce USE_REAL_INSTRUCTIONS to handle expressions not accepted by old assemblers
git-svn-id: trunk@48430 -
2021-01-26 14:50:58 +00:00
pierre
3362abb30c * Set softfloat_rounding_mode indise SetRoundMode function for all CPUs.
* SetRoundMode returns previous rounding mode value for all CPUs.

git-svn-id: trunk@48018 -
2021-01-03 21:44:18 +00:00
florian
b5725ac3ed * while not official supported, bootstrapping with 3.0.4 fixed
git-svn-id: trunk@47901 -
2020-12-30 09:34:22 +00:00
florian
98d3473a1a * i386: disable InterlockedCompareExchange128 implementation if PIC is enabled
git-svn-id: trunk@47852 -
2020-12-26 21:11:12 +00:00
florian
4f05523db9 + RTMSupport function
+ if available use RTM to support InterlockedCompareExchange128 on i386

git-svn-id: trunk@47833 -
2020-12-22 22:00:08 +00:00
svenbarth
48cc5250f9 * fpc_geteipasebx and fpc_geteipasecx are used as procedures, not functions, so declare them as such
git-svn-id: trunk@45980 -
2020-08-01 17:26:34 +00:00
florian
769a8fa248 + patch by fanjinke: Hygon support for the mmx unit, resolves #37391
git-svn-id: trunk@45848 -
2020-07-24 20:53:54 +00:00
florian
e26e824700 + more helper routine to check for CPU features added
git-svn-id: trunk@45835 -
2020-07-23 20:57:45 +00:00
florian
c01db96df4 + functions to check for Popcnt support
git-svn-id: trunk@45827 -
2020-07-22 20:47:11 +00:00
florian
ac5407268c * regenerated
git-svn-id: trunk@45778 -
2020-07-12 20:46:54 +00:00
Jeppe Johansen
c20b27ede9 Add most SSE instructions as intrinsics.
git-svn-id: trunk@44274 -
2020-03-06 21:34:22 +00:00
florian
22ab6dd329 * disabled mm procs again, they are not usable yet neither supposed to be
used

git-svn-id: trunk@43968 -
2020-01-18 11:37:57 +00:00
svenbarth
8184815780 * ensure that the new mm related procs are only used for 3.3.1 and newer as 3.2 and older don't support the corresponding SSE types
git-svn-id: trunk@43967 -
2020-01-18 11:22:24 +00:00
florian
70a836c4a2 * first part of merging parts of Jeppe's intrinsics patch, mainly r31135
is merged by this commit with a lot of adaptions

git-svn-id: trunk@43949 -
2020-01-14 21:52:39 +00:00
florian
3e6e72118b * keep stack aligned to 16 byte boundaries in assembler subroutines calling other subroutines
git-svn-id: trunk@43012 -
2019-09-15 17:17:31 +00:00
florian
62f890efa3 * improved floating point signal handling on x86/linux
git-svn-id: branches/debug_eh@41451 -
2019-02-24 20:03:02 +00:00
nickysn
9272bf59b2 + added x86 (i8086, i386 and x86_64) intrinsics fpc_x86_get_cs/ss/ds/es/fs/gs
for getting the value of x86 segment registers

git-svn-id: trunk@39433 -
2018-07-11 14:19:40 +00:00
nickysn
8e6205aca6 * changed the visibility of the writeport and readport methods in the ports unit
objects to private (since they should be accessed only through the default
  indexed property)

git-svn-id: trunk@39421 -
2018-07-09 14:55:20 +00:00
nickysn
3673f03841 * set the stdcall calling convention explicitly for each method, that requires
it, instead of using {$calling stdcall} in the go32v2 ports unit

git-svn-id: trunk@39402 -
2018-07-06 15:59:26 +00:00
nickysn
0ea3570b96 * moved the interface and implementation parts of the go32v2 ports unit to
include files portsh.inc and ports.inc in the i386 rtl directory

git-svn-id: trunk@39397 -
2018-07-06 15:52:18 +00:00
nickysn
ff2fff365f + added x86 compiler intrinsics fpc_x86_sti and fpc_x86_cli, which generate the
'sti' and 'cli' instructions

git-svn-id: trunk@39388 -
2018-07-04 16:48:34 +00:00
nickysn
a1bf5e2f07 + also added the fpc_x86_*port* intrinsics to the i386 system unit
git-svn-id: trunk@39369 -
2018-07-03 22:42:03 +00:00
nickysn
26a3ac3fd4 * moved the fpc_in_x86_*port* constants to the system unit in cpuinnr.inc in the
i8086, i386 and x86_64 rtl directories. This is done for consistency with
  other compiler internal function numbers (which are declared in innr.inc).

git-svn-id: trunk@39367 -
2018-07-03 21:30:43 +00:00
nickysn
39dc58de09 - removed one asm instruction from i386's StrEnd() implementation
git-svn-id: trunk@37615 -
2017-11-23 16:43:51 +00:00