Commit Graph

444 Commits

Author SHA1 Message Date
J. Gareth "Curious Kit" Moreton
fe39f9ca21 Fixed bug on x86 platforms where the stack pointer was not allocated if it was different to the frame pointer 2022-02-08 20:47:47 +00:00
florian
4966e93764 * small fix for ie 2022-01-07 11:05:49 +01:00
J. Gareth "Curious Kit" Moreton
2dc0995067 - Bug fix to new ADD/SUB optimisation where conditions are concerned
- Register allocation fixes for overflow checks
2021-11-17 20:18:57 +00:00
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