Commit Graph

569 Commits

Author SHA1 Message Date
Rika Ichinose
9917350ef0 AVX2 CompareByte for i386. 2024-09-23 20:10:57 +00:00
Rika Ichinose
fc1050a834 Make use of CPUX86_HINT_BSX_DEST_UNCHANGED_ON_ZF_1 in Bsf*/Bsr*. 2024-09-22 08:33:44 +00:00
Rika Ichinose
d7352e7b66 Remove most of the VER3_0 conditionals. 2024-08-25 09:44:11 +00:00
Rika Ichinose
ea33fdcdf8 Decimate rtl/i386/strings.inc. 2024-08-19 20:34:10 +00:00
Rika Ichinose
ca0e04a346 Faster path for IndexBytes with a match at the beginning. 2024-08-19 20:15:54 +00:00
Rika Ichinose
1030f67fb4 Use IndexQWord_SSE41 directly if -Cp RTL compiled with supports SSE 4.1. 2024-07-21 08:40:12 +00:00
Rika Ichinose
8bf2dc3f2b Simplify CPU units (70 LoC + 500 b code + 500 b data). 2024-07-18 20:13:11 +00:00
Rika Ichinose
a575a5c0fd Move Int128Rec to System; remove i386 and x86_64 CPU unit dependency on SysUtils. 2024-07-15 13:31:20 +00:00
Rika Ichinose
73bf0c82bb Disable _Plain versions when compiling RTL for newer CPUs. 2024-07-14 14:36:17 +00:00
florian
9d957cd6b3 * fix TSC support bit as mentioned by Rika 2024-07-01 22:26:03 +02:00
florian
bdef7af09e * corrected rte number after last merge 2024-06-30 15:25:08 +02:00
Rika Ichinose
ea271c1088 Make int64 division helpers “nostackframe”. 2024-06-30 12:51:40 +00:00
Rika Ichinose
0ca608243c SSE4.1 IndexQWord for i386 and x86-64. 2024-06-29 20:37:55 +00:00
florian
567187d4ba + TSCSupport 2024-06-29 22:32:36 +02:00
florian
a0cae50af6 * rtl part of #35433 2024-05-01 23:15:12 +02:00
Rika Ichinose
0655b342d4 Shorter IndexByte_Plain. 2024-04-26 18:35:47 +00:00
Rika Ichinose
b87e22151a Use non-conservative Fill thresholds. 2024-04-22 19:37:36 +00:00
Rika Ichinose
bad42011ab Better i386.inc:fpc_ansistr_unique. 2024-04-08 18:47:18 +00:00
Rika Ichinose
e42209457e Shorter i386 Exp(). 2024-03-29 21:04:32 +00:00
florian
22e9033076 + MMXSupport added to cpu unit
* mmx unit makes more use of cpu unit
2024-03-28 10:42:08 +01:00
Rika Ichinose
6c8acf28cd Shorten MMX unit. 2024-03-28 09:13:43 +00:00
Rika Ichinose
a35577593b Don’t misalign FillChar pattern. 2024-03-10 21:24:21 +00:00
Rika Ichinose
e87e14c7cc Make some i386.inc functions “nostackframe”. 2024-02-21 21:08:36 +00:00
Rika Ichinose
e5b47310c8 Supposedly faster i386 int() and frac(). 2024-02-18 21:37:39 +00:00
Rika Ichinose
0b5998ee8b Write two last values after 2× loops unconditionally instead of an extra check. 2024-02-10 22:47:40 +00:00
Rika Ichinose
e395166cb7 Check for Move overlaps in more obvious way (that also does no jumps in forward case). 2024-02-10 22:47:40 +00:00
Rika Ichinose
e4a0b1adb4 Use ERMS in all eligible cases, again.
Namely, when Move.count > NtThreshold but move distance is too short. 8310b169b7 messed with the logic and made this case fall back to a regular loop instead of more preferable ERMS.
2024-01-11 21:51:44 +00:00
Rika Ichinose
35345fe145 Fix FillQWord_SSE2 stack usage. 2024-01-06 21:18:56 +00:00
Rika Ichinose
9d8b801e4c Improve i386 fpc_shortstr_to_shortstr(), fpc_shortstr_compare(), and add fpc_shortstr_compare_equal(). 2024-01-01 21:12:52 +00:00
Rika Ichinose
0d5f7fa66b Increase non-temporal i386 & x64 Fill* thresholds to 4 Mb. 2024-01-01 18:33:33 +00:00
Rika Ichinose
b7d32e4933 ERMSB-aware Fill* for i386. 2024-01-01 18:33:33 +00:00
Rika Ichinose
8310b169b7 Move ERMS branch into a separate function instead of runtime checks of fast_large_repmovstosb. 2023-12-31 09:54:09 +00:00
Rika Ichinose
f14aced9c5 Attempt to ERMS backward i386 ‘Move’s. 2023-12-31 09:54:09 +00:00
Rika Ichinose
ecc56d7e68 Attempt to save push/pop ebx on small non-GPR moves. 2023-12-10 13:26:39 +00:00
Rika Ichinose
0750777fc8 Supposedly better fastmove.inc. 2023-12-10 13:26:39 +00:00
Rika Ichinose
6f8fb64d36 Fix a typo in CompareWord_Plain. 2023-11-28 22:17:20 +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
d287788b57 * patch by Rika to resolves #40531 2023-11-20 23:04:24 +01:00
florian
5be05044dd * detect avx support also in the i386 system unit 2023-11-18 22:47:47 +01:00
Rika Ichinose
9f491a40c7 Post-modern CompareByte for i386/SSE2. 2023-11-15 22:13:01 +00:00
Rika Ichinose
78368d4432 Specialized IndexQWord for i386. 2023-11-12 17:00:07 +00:00
Rika Ichinose
873492006d Working i386 fpc_pchar_to_shortstr; previous version didn’t support length limits smaller than 255 and was often slower. 2023-11-01 20:04:40 +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
florian
8fb803bba6 Revert " * patch by Rika: In i386/set.inc, use “pop mem” instead of “pop reg; mov mem ← reg”, resolves #40443"
This reverts commit cf1683d14c.
2023-09-20 22:58:34 +02:00
florian
cf1683d14c * patch by Rika: In i386/set.inc, use “pop mem” instead of “pop reg; mov mem ← reg”, resolves #40443 2023-09-18 22:56:26 +02:00
Rika Ichinose
f9667df16f Remove ancient i386 implementations of (large)set_(add/mul/sub/symdif/contains)_sets that were kept as references until someone implements varset_* versions, according to the comment. 2023-08-30 19:38:33 +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
29c36aa407 * string -> shortstring 2023-07-14 17:26:11 +02:00