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