nickysn
|
7a873f495d
* use the stack segment for SP-relative addresses in Tcgx86.g_concatcopy in
|
11 ani în urmă |
nickysn
|
ee20ecfcf2
* tcgx86.make_simple_ref: in i8086 memory models with DS<>SS, add an SS: segment
|
11 ani în urmă |
nickysn
|
b36a98ce51
+ Tcgx86.g_concatcopy: added support for memory models with DS<>SS
|
11 ani în urmă |
nickysn
|
e9e4cc8bcb
* Tcgx86.g_concatcopy: use boolean variables saved_ds and saved_es to keep track
|
11 ani în urmă |
nickysn
|
096bba90da
* fixed Tcgx86.g_concatcopy not using the correct push instruction size when
|
11 ani în urmă |
pierre
|
044891fd94
Avoid range check error in a_op_const_reg_reg
|
11 ani în urmă |
nickysn
|
229ebf33a8
+ support getting the address of far references on i8086 in
|
11 ani în urmă |
florian
|
37b34edbc6
* do not reuse registers when calculating addresses in pic mode
|
11 ani în urmă |
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 ani în urmă |
sergei
|
0d3f36eebf
- Remove references to global variable 'cg' from methods of tcg and some of its descendants.
|
11 ani în urmă |
florian
|
28a8dc42c6
* fix tcgx86.a_op_reg_reg on x86-64 and make use of it
|
11 ani în urmă |
florian
|
7d7bf1d877
+ make use of SHLX/SHRX on CPUs supporting BMI2
|
11 ani în urmă |
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 ani în urmă |
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 ani în urmă |
sergei
|
6b1f021fcf
- Removed remaining optimizations that duplicate functionality of tcg.optimize_op_const.
|
11 ani în urmă |
nickysn
|
1f7b14f38e
* fixed the conversion of powerof2 mul/imuls to lea in tcgx86.a_op_const_reg_reg
|
11 ani în urmă |
nickysn
|
cc1faad3d2
+ make use of the 3-operand form of IMUL on i386 and x86_64
|
11 ani în urmă |
nickysn
|
5d75bf4f92
* always use IMUL instead of MUL on i386, when doing a 32->32 multiplication
|
11 ani în urmă |
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 ani în urmă |
florian
|
e210d5f30e
+ cpu_capabilites for x86_64 and i386
|
11 ani în urmă |
sergei
|
f2096de53a
* tcg386.g_proc_exit: instead of recalculating stack size, use current_procinfo.final_localsize which was calculated in g_proc_entry.
|
11 ani în urmă |
sergei
|
179586f589
+ SEH support for Win32. Enable by cycling with OPT=-dTEST_WIN32_SEH.
|
11 ani în urmă |
florian
|
4d5119bf1c
* fixes several issues which cause warnings by the dfa code when using it to detect uninitialized variables
|
12 ani în urmă |
nickysn
|
7ae59a62c5
* emit a FWAIT after a floating point store, when targeting the 8087 and 80287
|
12 ani în urmă |
nickysn
|
dea947f87b
* fixed tcgx86.a_op_const_ref for shl/shr/sar/rol/ror on i8086 and x86_64
|
12 ani în urmă |
nickysn
|
d0f988f7a8
* don't use LEA in the code generator on i8086, as this breaks it quite badly.
|
12 ani în urmă |
florian
|
7fc1d70e49
* do reg2=reg1*const by lea if possible
|
12 ani în urmă |
florian
|
3c58cad96b
* make use of lea if possible
|
12 ani în urmă |
nickysn
|
67fdcb02f2
* in tcgx86.make_simple_ref, on the i8086, emit 'mov es, reg', instead of
|
12 ani în urmă |
nickysn
|
6be9627e74
* use all kinds of copy and not just copy_string in Tcgx86.g_concatcopy, when
|
12 ani în urmă |