Commit Graph

198 Commits

Author SHA1 Message Date
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
pierre
e35e5ad349 Add missing CPULLVM versions for fpc_abs_real and fpc_sqr_real in x86_64/math.inc
git-svn-id: trunk@47550 -
2020-11-24 07:59:46 +00:00
svenbarth
0c316deab5 * readd SmallInt typecasts to SmallInt overload of SwapEndian
git-svn-id: trunk@46898 -
2020-09-19 17:42:04 +00:00
svenbarth
9d86fed95b * avoid range check error when using SwapEndian with 16-bit constants
+ added test

git-svn-id: trunk@46897 -
2020-09-19 17:04:17 +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
svenbarth
b3c579f49c * ensure that the includes for the new mm related files are indeed enabled
git-svn-id: trunk@43966 -
2020-01-18 11:22:20 +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
33fa211b84 + x86-64: assembler implementation for u128_div_u64_to_u64 for SysV ABI
* reminder => remainder (thanks to Stefan Kanthak for pointing it out)

git-svn-id: trunk@43695 -
2019-12-17 21:54:47 +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
7df861487b * use include files in the unix ports unit as well
+ add portsh.inc and ports.inc for x86_64 as well

git-svn-id: trunk@39420 -
2018-07-09 14:42:01 +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
2c8853f239 + added the fpc_x86_*port* intrinsics to the x86_64 system unit as well
git-svn-id: trunk@39370 -
2018-07-03 22:53:48 +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
svenbarth
7990b2e3f3 * apply patch from J. Gareth Moreton to implement Int() for SSE (currently only used on Win64)
+ added test

git-svn-id: trunk@38993 -
2018-05-14 21:08:04 +00:00
svenbarth
abd893cac4 * fix for Mantis #33635: correctly working SSE2 based Frac() implementation by J. Gareth Moreton
+ added test

git-svn-id: trunk@38903 -
2018-05-04 15:44:40 +00:00
svenbarth
e3ea46d1cb * disable SSE optimized Frac() for Win64; it has a much lower supported range than the existing Pascal implementation which uses Int() (in essence Round() and Trunc() should be corrected as well)
git-svn-id: trunk@38856 -
2018-04-27 15:18:36 +00:00
pierre
4026644278 Add explicit registers to fcomip to allow compilation with clang (bug report 33547)
git-svn-id: trunk@38661 -
2018-04-02 17:14:42 +00:00
florian
ff86c80176 * cpu specific header file for the system unit: cpuh.inc, moved several declarations into it
git-svn-id: trunk@37542 -
2017-11-01 16:33:30 +00:00
florian
5b766a1e67 * fixed CompareByte for x86-64 after r37528
git-svn-id: trunk@37535 -
2017-10-30 21:01:59 +00:00
florian
0c7306e1cd * improved CompareByte for x86-64 based on a patch by Markus Beth
git-svn-id: trunk@37528 -
2017-10-29 22:15:31 +00:00
nickysn
30b5a4dd3e + added x86_64 asm implementation of math.DivMod
git-svn-id: trunk@36306 -
2017-05-23 17:14:10 +00:00
svenbarth
5f08e47d84 + add an SSE2 implementation of Frac() (the existing Trunc() and Round() implementations are also SSE2, so nothing special to keep in mind here)
git-svn-id: trunk@36253 -
2017-05-19 14:59:23 +00:00