nickysn
|
7a873f495d
* use the stack segment for SP-relative addresses in Tcgx86.g_concatcopy in
|
11 anni fa |
nickysn
|
ee20ecfcf2
* tcgx86.make_simple_ref: in i8086 memory models with DS<>SS, add an SS: segment
|
11 anni fa |
nickysn
|
b36a98ce51
+ Tcgx86.g_concatcopy: added support for memory models with DS<>SS
|
11 anni fa |
nickysn
|
e9e4cc8bcb
* Tcgx86.g_concatcopy: use boolean variables saved_ds and saved_es to keep track
|
11 anni fa |
nickysn
|
096bba90da
* fixed Tcgx86.g_concatcopy not using the correct push instruction size when
|
11 anni fa |
pierre
|
044891fd94
Avoid range check error in a_op_const_reg_reg
|
11 anni fa |
nickysn
|
229ebf33a8
+ support getting the address of far references on i8086 in
|
11 anni fa |
florian
|
37b34edbc6
* do not reuse registers when calculating addresses in pic mode
|
11 anni fa |
sergei
|
9c1f917e3a
* a_call_ref functionality cannot be implemented efficiently at code generator level, because references need specific preparations at earlier points. Moved this support to tcgcallnode and its x86 descendants, and got rid of all ifdef's around.
|
11 anni fa |
sergei
|
0d3f36eebf
- Remove references to global variable 'cg' from methods of tcg and some of its descendants.
|
11 anni fa |
florian
|
28a8dc42c6
* fix tcgx86.a_op_reg_reg on x86-64 and make use of it
|
11 anni fa |
florian
|
7d7bf1d877
+ make use of SHLX/SHRX on CPUs supporting BMI2
|
11 anni fa |
florian
|
48ae2d215a
+ concatcopy variants using sse and avx, only activated if optimization for size is done because at least on an i7-4770 it has shown no benefit
|
11 anni fa |
nickysn
|
85dd9e5789
+ added a size parameter to optimize_op_const and do a sign extension of the 'a' parameter up from the specified size, so that things like (i and $ffffffff) get optimized away the same way as (i and -1)
|
11 anni fa |
sergei
|
6b1f021fcf
- Removed remaining optimizations that duplicate functionality of tcg.optimize_op_const.
|
11 anni fa |
nickysn
|
1f7b14f38e
* fixed the conversion of powerof2 mul/imuls to lea in tcgx86.a_op_const_reg_reg
|
11 anni fa |
nickysn
|
cc1faad3d2
+ make use of the 3-operand form of IMUL on i386 and x86_64
|
11 anni fa |
nickysn
|
5d75bf4f92
* always use IMUL instead of MUL on i386, when doing a 32->32 multiplication
|
11 anni fa |
nickysn
|
820b667e1b
- rm the OP_IMUL to SHL optimization from tcgx86.a_op_const_reg and tcgx86.a_op_const_ref, because it's already done in optimize_op_const, which is called in the beginning of both methods.
|
11 anni fa |
florian
|
e210d5f30e
+ cpu_capabilites for x86_64 and i386
|
11 anni fa |
sergei
|
f2096de53a
* tcg386.g_proc_exit: instead of recalculating stack size, use current_procinfo.final_localsize which was calculated in g_proc_entry.
|
11 anni fa |
sergei
|
179586f589
+ SEH support for Win32. Enable by cycling with OPT=-dTEST_WIN32_SEH.
|
11 anni fa |
florian
|
4d5119bf1c
* fixes several issues which cause warnings by the dfa code when using it to detect uninitialized variables
|
12 anni fa |
nickysn
|
7ae59a62c5
* emit a FWAIT after a floating point store, when targeting the 8087 and 80287
|
12 anni fa |
nickysn
|
dea947f87b
* fixed tcgx86.a_op_const_ref for shl/shr/sar/rol/ror on i8086 and x86_64
|
12 anni fa |
nickysn
|
d0f988f7a8
* don't use LEA in the code generator on i8086, as this breaks it quite badly.
|
12 anni fa |
florian
|
7fc1d70e49
* do reg2=reg1*const by lea if possible
|
12 anni fa |
florian
|
3c58cad96b
* make use of lea if possible
|
12 anni fa |
nickysn
|
67fdcb02f2
* in tcgx86.make_simple_ref, on the i8086, emit 'mov es, reg', instead of
|
12 anni fa |
nickysn
|
6be9627e74
* use all kinds of copy and not just copy_string in Tcgx86.g_concatcopy, when
|
12 anni fa |