Commit Graph

226 Commits

Author SHA1 Message Date
Rika Ichinose
0d5f7fa66b Increase non-temporal i386 & x64 Fill* thresholds to 4 Mb. 2024-01-01 18:33:33 +00:00
Rika Ichinose
1ec0326995 REP STOS branch for x64 Fill* (only for System V ABI for now). 2023-11-26 15:06:59 +00:00
Rika Ichinose
a4c324ee23 Fill* for x64, physically sharing half of the code with FillChar. 2023-11-26 15:06:59 +00:00
Rika Ichinose
b468793c63 Index/Compare refined by hand instead of mostly being GCC output. 2023-11-21 22:32:16 +00:00
florian
b164817e18 * check also for XGETBV support, resolves problem reported by Pierre 2023-11-20 22:55:25 +01:00
florian
704ad21b23 + centralized cpu capability detection 2023-11-18 22:28:50 +01:00
Rika Ichinose
c07f36b30b Post-modern CompareByte for x86-64/SSE2. 2023-11-16 21:42:51 +00:00
Rika Ichinose
0bc1d8d446 Deny effective RTM support if CPUID bit RTM_ALWAYS_ABORT is set. 2023-11-01 17:10:14 +00:00
Rika Ichinose
e00ab51185 On i386 and x86_64, add cpu.CPUID — high-level wrapper to CPUID instruction, and cpu.CPUBrandString — convenience for CPUID leaves 80000002, 80000003, and 80000004. 2023-10-31 21:20:45 +03:00
Rika Ichinose
0e426db5de x86_64.inc: shorten Interlocked*, perform macro-fused test+jz in Index* early. 2023-10-25 21:05:21 +00:00
Rika Ichinose
2dca69f2ac Specialized fpc_varset_OP_sets for i386 and x86-64. 2023-08-30 19:38:33 +00:00
Michael VAN CANNEYT
ccfa38c68e * Dotted RTL compiles 2023-07-27 19:04:03 +02:00
Michael VAN CANNEYT
5ce739135b * Char -> AnsiChar 2023-07-14 17:26:10 +02:00
Rika Ichinose
669d41172c Fix UTF-8 symbols in comments. 2023-07-08 21:18:55 +00:00
Rika Ichinose
8d5d7b480d Supposedly faster Move for x64. 2023-07-08 21:18:55 +00:00
Rika Ichinose
f20c7b9ae9 Shorter x86_64.inc:inc/declocked. 2023-06-14 21:19:11 +00:00
Rika Ichinose
b56cbad50e Supposedly faster FillChar for x64. 2023-04-13 15:55:42 +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
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
florian
7cc94fc000 * patch by Rika: Trivial adjustments to !379, resolves #40168 2023-02-23 22:46:05 +01:00
Rika Ichinose
b723178117 Even better CompareByte for x64.
Tries to handle tails with a SIMD unit as well.
2023-02-19 18:12:37 +00:00
Rika Ichinose
d36e96ea74 Improved CompareDWord for i386 and x86_64. 2023-02-19 18:07:46 +00:00
Rika Ichinose
eff26797ab SSE2 IndexDWord for x64. 2023-02-12 15:18:45 +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
a45ba3add5 * x86-64: math helpers do not need a stackframe 2022-08-05 23:02:05 +02:00
florian
6bbefcae9e * check more cpuid flags in the cpu units 2022-04-04 22:55:05 +02:00
florian
652e75f8ec * use v*csr instructions if they are available 2022-03-23 21:53:14 +01:00
florian
fbf68af605 * continued to update change information 2022-03-23 21:43:08 +01:00
florian
39627cbdfb + AVX512VBMISupport and AVX512VBMI2Support 2022-03-05 20:35:25 +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
e1698a5969 * when compiling with the main branch compiler, p2align with 3 parameters can be used now 2021-10-19 21:32:40 +02:00
florian
bdc826cc18 * x86-64: do not jump in inc/declocked to return but return directly 2021-10-17 22:44:52 +02:00
florian
bff09e8e9e + CPU units: check for SHA support 2021-10-09 16:23:11 +02:00
florian
d354428f42 * moved fwait 2021-09-01 09:29:51 +02:00
florian
777d536d9b * extended routines int/frac/trunc shouldn't mess with precision or exception flags, should fix #39275 2021-08-12 21:20:30 +02:00
florian
f0d92b74c1 - x86_64: some more fwaits removed
git-svn-id: trunk@49633 -
2021-07-23 20:50:39 +00:00
florian
cebf880df9 * x86-64: fpc_frac_real further improved: memory loads of extendeds are expensive
git-svn-id: trunk@49632 -
2021-07-22 21:15:03 +00:00
florian
fafee8b85b * x86-64: removed some fwait instructions from fpc_frac_real, they shouldn't be necessary
git-svn-id: trunk@49626 -
2021-07-21 20:41:31 +00: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
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
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
pierre
40b7af1025 Use pascal code for LLVM fpc_sqr_real, because fmultp instruction is not accepted by llvm
git-svn-id: trunk@47555 -
2020-11-24 13:57:06 +00:00