Commit Graph

441 Commits

Author SHA1 Message Date
florian
8f68988aef * another location to use source register as second register in VCVTSD2SS and VCVTSS2SD
to break dependency chains, hopefully final fix for #39360
2021-10-09 14:24:14 +02:00
florian
4752230c8f * use source register as second register in VCVTSD2SS and VCVTSS2SD, this should break
dependency chains better and resolves partially #39360
2021-10-07 23:16:39 +02:00
yury
75491ae21c * Removed/ifdefed the assigned and unused variables.
git-svn-id: trunk@48391 -
2021-01-24 13:58:17 +00:00
yury
64c586b86d * Removed/ifdefed lots of unused variables.
git-svn-id: trunk@48384 -
2021-01-24 12:24:01 +00:00
florian
ecc3ce64ea * x86: some fixes to enable 8 and 16 bit operations
git-svn-id: trunk@48166 -
2021-01-16 22:46:25 +00:00
florian
792b629aa6 + -Xa option: generate code which allows to use more than 2 GB of static data on 64 Bit targets
+ implemented support for x86-64
  * more than 2 GB static data requires to use the --no-relax option on linux

git-svn-id: trunk@47651 -
2020-11-30 22:07:34 +00:00
florian
9c7cb3dbd7 * fix spilling of avx(512) registers
* get_scalar_mm_op fixed for M256

git-svn-id: trunk@47524 -
2020-11-21 22:30:34 +00:00
florian
c3a0e0c6d2 * compilation on i386 fixed
git-svn-id: trunk@47369 -
2020-11-09 21:46:25 +00:00
florian
78244d89dc * use VPXORD in avx-512 mode as VPXOR does not work for the upper 16 registers
git-svn-id: trunk@47368 -
2020-11-09 21:21:36 +00:00
florian
47066f0ce7 * moved UseAVX from cgx86 to cpubase
+ UseAVX512

git-svn-id: trunk@47346 -
2020-11-08 19:39:18 +00:00
florian
3ae370b190 * also use avx copying for mod 4=0 memory blocks
git-svn-id: trunk@47328 -
2020-11-05 22:13:58 +00:00
florian
f8d33dc188 * fix tcgx86.a_loadmm_reg_ref and tcgx86.a_loadmm_ref_reg for 64 OS_M512
git-svn-id: trunk@47315 -
2020-11-04 21:31:49 +00:00
florian
60bb8600a1 + copy mode avx512
git-svn-id: trunk@47314 -
2020-11-04 21:31:48 +00:00
florian
37e934ffbd * using ymm registers for copying data is always useful, regardless of alignment
git-svn-id: trunk@47313 -
2020-11-04 21:31:48 +00:00
florian
637976e83f * patch by Marģers to unify internal error numbers, resolves #37888
git-svn-id: trunk@47103 -
2020-10-13 19:59:01 +00:00
florian
c2684c0dc3 * use V* instructions if possible
* fix i386 compilation

git-svn-id: trunk@47076 -
2020-10-10 13:50:35 +00:00
florian
cf153b0854 * use (V)XORPS/D for unary minus
git-svn-id: trunk@47074 -
2020-10-10 13:50:34 +00:00
yury
4dcdaa259a * 8086: Use CX as a scratch register instead of BX.
git-svn-id: trunk@46554 -
2020-08-22 20:50:02 +00:00
florian
e73dd883cd + handle OS_128 in mm code
git-svn-id: trunk@45728 -
2020-07-03 21:12:07 +00:00
florian
5f67d830e7 * better rules if a 3 op mul operation is tried
git-svn-id: trunk@45605 -
2020-06-06 19:21:04 +00:00
florian
88c98a5741 * improve copy_avx gencopy mode
git-svn-id: trunk@45486 -
2020-05-24 17:52:07 +00:00
florian
93eb40b05c * create vpxor instead of pxor in avx mode
git-svn-id: trunk@45485 -
2020-05-24 17:52:06 +00:00
florian
3d81c8e51d * re-activate copy_mm: using it instead of movs might reduce register pressure
git-svn-id: trunk@45482 -
2020-05-24 13:56:41 +00:00
florian
8f0a3cfce7 * x86-64: adjust stack by push/pop if possible
git-svn-id: trunk@45476 -
2020-05-23 17:50:13 +00:00
florian
7dbab3a78f * handle OP_XOR for a full mm register correctly in tcgx86.opmm_loc_reg
git-svn-id: trunk@45348 -
2020-05-12 20:43:15 +00:00
nickysn
0f6ab0de17 * handle LOC_(C)SUBSETREG/REF in second_NegNot_assign
* changed the way OP_NEG and OP_NOT are handled in op_reg_ref, in order to be
  consistent with op_reg_reg
* introduced op_reg,op_ref,op_subsetreg,op_subsetref and op_loc for the unary
  operations only (OP_NEG,OP_NOT)

git-svn-id: trunk@45302 -
2020-05-07 02:43:02 +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
a34ae2261a * copy fpu parameters using fld/fst onto the stack
git-svn-id: trunk@43861 -
2020-01-04 22:19:15 +00:00
florian
b7c6e01b03 * cleaning up tcgsize: it makes no sense to declare every combination and type
the different vector types must be either handled in the high level cg or
    by using the shuffle parameter

git-svn-id: trunk@43860 -
2020-01-04 21:54:53 +00:00
florian
7000d82dcd * do not convert cmp 0,... into test ...,... before the post pass of the peephole optimizer
as this conversion might result in missing further optimizer opportunities

git-svn-id: trunk@43596 -
2019-11-26 22:09:34 +00:00
florian
a7e72617a6 * fix stackmisalignment calculation to take care of pushf/push cs, before r43503,
it was correct by coincidence

git-svn-id: trunk@43506 -
2019-11-17 09:14:54 +00:00
florian
240acc10f8 * fix calculation of stackmisalignment for interrupt procedures as pointed out by Jonas
git-svn-id: trunk@43503 -
2019-11-16 17:46:39 +00:00
florian
896e031e84 * interrupt procedures fixed for i386 targets with a fixed stack with 16 byte alignment
git-svn-id: trunk@43006 -
2019-09-15 17:17:27 +00:00
florian
ba203c0564 + x86 makes use of fpu_capabilities
* moved CPUX86_HAS_AVXUNIT to FPUX86_HAS_AVXUNIT
+ mm register allocator can be initialized with 32 mm registers of AVX512

git-svn-id: trunk@42707 -
2019-08-16 11:35:03 +00:00
Jonas Maebe
1b6425176b * synchronised with trunk till r42049
git-svn-id: branches/debug_eh@42050 -
2019-05-12 18:44:05 +00:00
Jonas Maebe
281b3ad276 * fix case completeness and unreachable code warnings in compiler that would
be introduced by the next commit

git-svn-id: trunk@42046 -
2019-05-12 14:29:03 +00:00
Jonas Maebe
a7bd37d17a * synchronised with trunk till r40776
git-svn-id: branches/debug_eh@41867 -
2019-04-13 15:16:09 +00:00
nickysn
8f8aa70074 + OpenBSD i386 and x86_64 support in tcgx86.g_profilecode
git-svn-id: trunk@41760 -
2019-03-21 17:09:21 +00:00
Jonas Maebe
866331de34 * fixed CFI registers for leave on x86-64, and place CFI directives closer to
the instructions they apply to

git-svn-id: branches/debug_eh@41576 -
2019-03-03 17:14:56 +00:00
florian
367bc18bc5 * cfa for x86-64 fixed
git-svn-id: branches/debug_eh@41563 -
2019-03-02 23:03:32 +00:00
Jonas Maebe
50c82b6468 * synchronised with trunk till r41537
git-svn-id: branches/debug_eh@41538 -
2019-03-01 16:20:22 +00:00
yury
a04e4971fc * i386: Do not request GOT for every function call. GOT is requested only for external calls in thlcgcpu.a_call_name(). Local calls are always PC relative.
git-svn-id: trunk@41464 -
2019-02-25 15:48:41 +00:00
florian
db6916453d * warning fixed
git-svn-id: branches/debug_eh@41452 -
2019-02-24 20:03:23 +00:00
florian
18fb53e012 * set cfa offset always properly
git-svn-id: branches/debug_eh@41413 -
2019-02-22 22:00:20 +00:00
florian
a8c8cc1890 * create proper cfi, when registers are pushed
git-svn-id: branches/debug_eh@41382 -
2019-02-19 22:16:39 +00:00
florian
3567d01ee4 * improved CFI
git-svn-id: branches/debug_eh@41356 -
2019-02-17 20:26:32 +00:00
florian
72a02b467c + generate more cfi on x86
git-svn-id: branches/debug_eh@41287 -
2019-02-10 18:00:24 +00:00
florian
597a23d278 + tls support for x86_64-linux (not yet enabled by default)
git-svn-id: trunk@41081 -
2019-01-27 09:37:25 +00:00
florian
6dbde11f5a * three operand shl for shifting by 2, 4 or 8 can be simulated by lea
git-svn-id: trunk@40337 -
2018-11-17 15:08:22 +00:00
florian
6a6ea6729f * i8086 compiler fixed, resolves #34552
git-svn-id: trunk@40316 -
2018-11-14 18:05:35 +00:00