Commit Graph

561 Commits

Author SHA1 Message Date
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
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