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
svenbarth
b58c3ed212
+ add guards for consistency with the code for Extended
...
git-svn-id: trunk@36252 -
2017-05-19 14:57:36 +00:00
marco
bc39eb29d3
* comment spelling fix (modifed->modified)
...
git-svn-id: trunk@35119 -
2016-12-13 12:50:38 +00:00
sergei
4ddbb7cd26
* Fixed assembler blocks to comply with x86_64 ABIs, which normally do not allow to change stack pointer at arbitrary locations. Register RBX is now saved/restored by compiler in function prologue, due to its presence in list of modified registers.
...
git-svn-id: trunk@34908 -
2016-11-17 10:58:10 +00:00
sergei
cad30aaee9
* x86_64: Modified fpc_exp_real so it does not use 'sahf' assembler instruction, which may be not present on early 64-bit capable x86 processors. Mantis #29583 .
...
git-svn-id: trunk@33205 -
2016-03-07 22:39:34 +00:00
Jonas Maebe
e4647ac133
- removed "nostackframe" from floating point helpers for llvm, as FPC
...
doesn't handle nostackframe correctly in combination with extended
parameters on x86 (with or without llvm)
git-svn-id: trunk@32598 -
2015-12-05 18:03:57 +00:00
Jonas Maebe
6909523b70
* handle atan, sqrt, ln, sin and cos in the x86 RTL for llvm
...
o there are llvm intrinsics for all of these except for atan,
but these obey "the same rules as the equivalent libc functions"
and I first have to investigate whether these libc functions
behave the same as our FPC implementations
git-svn-id: trunk@31657 -
2015-09-12 23:33:57 +00:00
nickysn
7c884bd2ee
+ added all x86_64 specific system unit includes to rtl/x86_64/makefile.cpu
...
git-svn-id: trunk@30132 -
2015-03-07 22:49:31 +00:00
florian
43515ab109
* explicitly add asmmode, resolves #27255
...
git-svn-id: trunk@29424 -
2015-01-06 14:45:34 +00:00
sergei
f456bb3a25
* Re-implement ln(x) also for x87-based x86_64 targets (counterpart of r27367,r27518,r27552,r27553 for i386 target).
...
git-svn-id: trunk@29131 -
2014-11-23 21:37:32 +00:00
sergei
b16c6f8ced
* i386 and x86_64 changes for Delphi compatibility:
...
* 'mxcsr' variable made public and renamed to DefaultMXCSR.
* GetSSECSR and SetSSECSR renamed to GetMXCSR and SetMXCSR, respectively. Previous names continue to exist as deprecated aliases.
git-svn-id: trunk@27656 -
2014-04-25 15:10:12 +00:00
sergei
217bac7a0b
- Removed fpc_pi_real compilerproc, it is no longer used. At least two releases (2.6.2 and 2.6.4) emit Pi directly as a constant.
...
git-svn-id: trunk@27500 -
2014-04-07 09:16:24 +00:00
sergei
2981f73aaa
- Removed redundant functions "power", they were neither used nor accessible through interface. The actual function "power" is located in Math unit.
...
git-svn-id: trunk@27499 -
2014-04-07 09:04:13 +00:00
sergei
d1348d3f9b
- i386 and x86_64: Once softfloat stuff has been cleaned up, SysResetFPU and SysInitFPU end up doing exactly the same. Removed one of them.
...
git-svn-id: trunk@27280 -
2014-03-25 10:52:07 +00:00
sergei
a882e89bc2
* x86_64: SetExceptionMask and SetRoundingMode must return the old value of mask/mode respectively, not the new one.
...
git-svn-id: trunk@27225 -
2014-03-21 18:08:11 +00:00
florian
1f6c43810d
* fix wrong suffix
...
git-svn-id: trunk@27211 -
2014-03-20 20:12:46 +00:00
florian
5d57f38619
+ functions for FMA and AVX2 detection
...
git-svn-id: trunk@27202 -
2014-03-20 15:47:51 +00:00
sergei
4952754184
- i386 and x86_64 no longer use any softfloat stuff.
...
git-svn-id: trunk@27182 -
2014-03-19 12:14:44 +00:00
sergei
0255eb880e
- Removed mathuh.inc files which are identical for all targets (except m68k, see below), their contents moved into math.pp.
...
+ m68k/mathu.inc: added stub implementations for missing functions.
git-svn-id: trunk@27180 -
2014-03-18 20:01:15 +00:00
sergei
fb02283927
* x86_64: Adjust result of fpc_longjmp without using branches.
...
git-svn-id: trunk@26415 -
2014-01-10 07:29:28 +00:00