Commit Graph

41971 Commits

Author SHA1 Message Date
Tomas Hajny
1a430d8110 * GetProcAddr added for OS/2, type of argument for ordinal target specific now
git-svn-id: trunk@26521 -
2014-01-19 21:15:26 +00:00
nickysn
b91509159a + added asm optimized 64-bit division helpers for i8086 by Max Nazhalov
git-svn-id: trunk@26520 -
2014-01-19 20:26:24 +00:00
sergei
ca58cc1d64 + x86_64: generate position-independent case jump tables (twice smaller than absolute ones and do not require dynamic relocations in .dll/.so).
git-svn-id: trunk@26519 -
2014-01-19 15:41:05 +00:00
paul
eb508a18e9 compiler: remove RST writer
git-svn-id: trunk@26518 -
2014-01-19 04:40:41 +00:00
Tomas Hajny
cce9498b7c * fix building for OS/2 and EMX (additional include path necessary)
git-svn-id: trunk@26517 -
2014-01-19 01:25:55 +00:00
Tomas Hajny
5f6aefa4c0 + character sets for central Europe added
git-svn-id: trunk@26516 -
2014-01-19 01:24:16 +00:00
sergei
6b1f021fcf - Removed remaining optimizations that duplicate functionality of tcg.optimize_op_const.
- Don't call make_simple_ref if operation will be optimized away or replaced with another one, which calls make_simple_ref itself.

git-svn-id: trunk@26515 -
2014-01-19 01:19:01 +00:00
nickysn
c83032992d * more fixes to the 3-op IMUL spilling:
o Return the correct operation type for all forms of IMUL in
    taicpu.spilling_get_operation_type
  o Properly support 3-op IMUL in trgx86.do_spill_replace

git-svn-id: trunk@26514 -
2014-01-18 21:46:13 +00:00
florian
a752e3542d + more x86 cpu flags
git-svn-id: trunk@26513 -
2014-01-18 21:03:09 +00:00
nickysn
4a107dcfa6 + added 32-bit asm optimized division helpers for i8086 by Max Nazhalov
git-svn-id: trunk@26512 -
2014-01-18 20:33:30 +00:00
sergei
78e726b34f * i386: Somewhat optimized fpc_mul_qword routine, got rid from variable 'r', registers esi and edi. Also ignore overflow checking when both operands have their high dwords equal to zero, because in such case multiplication cannot overflow.
git-svn-id: trunk@26511 -
2014-01-18 19:28:00 +00:00
sergei
e6a9f3b15b * Fixed spilling of 3-operand IMUL instruction (went unnoticed this far because such instructions were not emitted by compiler).
git-svn-id: trunk@26510 -
2014-01-18 19:21:48 +00:00
nickysn
1f7b14f38e * fixed the conversion of powerof2 mul/imuls to lea in tcgx86.a_op_const_reg_reg
git-svn-id: trunk@26509 -
2014-01-18 17:58:31 +00:00
nickysn
cc1faad3d2 + make use of the 3-operand form of IMUL on i386 and x86_64
git-svn-id: trunk@26508 -
2014-01-18 17:04:57 +00:00
nickysn
1de847c754 * fixed error in comment
git-svn-id: trunk@26507 -
2014-01-18 17:00:10 +00:00
florian
7028210817 + tzcnt assembler instruction
git-svn-id: trunk@26506 -
2014-01-18 12:11:50 +00:00
florian
0e67ca6419 * fixed output of test if a failure happens
git-svn-id: trunk@26505 -
2014-01-18 12:08:02 +00:00
sergei
3a3197ae9c + i386: inline 64-bit multiplications if overflow checking is disabled and not optimizing for size. Rough testing on Core 2 Duo shows speed improvement by factor of 5, even despite inlined code does not check for zero upper dwords.
git-svn-id: trunk@26504 -
2014-01-18 11:41:55 +00:00
florian
2a2184bc40 * regenerated makefiles affected by the last change
git-svn-id: trunk@26503 -
2014-01-18 10:21:41 +00:00
florian
694ba6a702 * call strip on the COMPILER macro to make the output look more nicely
git-svn-id: trunk@26502 -
2014-01-18 10:19:54 +00:00
florian
fd5fa95416 + OPTNEW Makefile parameter: when running a native cycle, this allows to pass a parameter only to the new generated compiler
git-svn-id: trunk@26501 -
2014-01-18 10:19:16 +00:00
sergei
a3efd9e1df + Added method taddnode.use_generic_mul64bit, allowing it to inline full 64-bit multiplications, and fixed ARM to comply (it was not checking for possible 32x32 to 64 optimization after detecting a 64-bit operand, so recently added code for 32x32 to 64 bit optimization was inactive).
git-svn-id: trunk@26500 -
2014-01-18 09:59:59 +00:00
nickysn
2459518bdd * use IMUL even for unsigned multiplication on x86_64, when overflow checking is
off

git-svn-id: trunk@26499 -
2014-01-18 03:36:15 +00:00
nickysn
5d75bf4f92 * always use IMUL instead of MUL on i386, when doing a 32->32 multiplication
without overflow checking

git-svn-id: trunk@26498 -
2014-01-18 02:56:51 +00:00
nickysn
2602f379d7 * fixes in the 16 to 32-bit multiplication in ti8086addnode.second_mul
git-svn-id: trunk@26497 -
2014-01-18 00:38:46 +00:00
pierre
f4726e068b Avoid assmebler size mismatch warning in Keep procedure
git-svn-id: trunk@26496 -
2014-01-17 23:33:24 +00:00
nickysn
3f4111ac37 * emit MUL instead of IMUL in ti8086addnode.second_mul when overflow checking is
off and the multiplication is 16->16

git-svn-id: trunk@26495 -
2014-01-17 23:04:46 +00:00
pierre
76c40a49db Add missing field enable_count in breakpoint record (added in 7.5 release)
git-svn-id: trunk@26494 -
2014-01-17 22:52:31 +00:00
nickysn
529008e031 * emit MUL (when overflow checking is off), instead of IMUL for OP_IMUL in
tcg8086.a_op_const_reg, when the target CPU is 8086/8088, because it's
  supposed to be faster on these processors, according to Intel's instruction
  timings.

git-svn-id: trunk@26493 -
2014-01-17 21:23:42 +00:00
sergei
6168f563c2 * x86 compares: compare references with constants directly (without loading to register) if possible, this helps to reduce register pressure.
git-svn-id: trunk@26492 -
2014-01-17 19:42:09 +00:00
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.
git-svn-id: trunk@26491 -
2014-01-17 18:34:13 +00:00
michael
9535837039 * Fix recuperation of first transaction created in InternalDoConnect
git-svn-id: trunk@26490 -
2014-01-17 17:21:35 +00:00
paul
1f83117f16 utils: use fpc 2.6.2 compatible code
git-svn-id: trunk@26489 -
2014-01-17 10:44:24 +00:00
nickysn
767a0f1187 - rm TODO comment about the IMUL optimization with SHL from
tcg8086.a_op_const_reg, since that optimization is already done in
  optimize_op_const, which is called earlier in the same method.

git-svn-id: trunk@26488 -
2014-01-17 10:28:30 +00:00
nickysn
1a846e7c71 - rm TODO comment for overflow checking from tcg8086.a_op_const_reg, since
overflow checking should not be implemented there. It should only leave the
  flags in place for the jo instruction, which the IMUL instruction already
  does.

git-svn-id: trunk@26487 -
2014-01-17 10:26:20 +00:00
paul
ba00250fb4 fpmkunit: choose between .rst and .rsj
git-svn-id: trunk@26486 -
2014-01-17 09:06:20 +00:00
paul
e181fbc327 utils: clean rsj files by delp
git-svn-id: trunk@26485 -
2014-01-17 02:24:37 +00:00
paul
13a0b21031 rstconv: fixed memory leak
git-svn-id: trunk@26484 -
2014-01-17 02:15:35 +00:00
nickysn
34cf432600 * in the generic implementation of fpc_mul_int64, fallback directly to
fpc_mul_qword directly in case overflow checking is not used

git-svn-id: trunk@26483 -
2014-01-17 01:25:41 +00:00
florian
e210d5f30e + cpu_capabilites for x86_64 and i386
* take advantage of bmi2 instruction rorx

git-svn-id: trunk@26482 -
2014-01-16 21:47:28 +00:00
sergei
75894722d4 * Factored a reusable piece of code into separate method.
git-svn-id: trunk@26481 -
2014-01-16 16:43:06 +00:00
marco
373e450dbc * more android fixes for sockets unit, mantis #25528
git-svn-id: trunk@26480 -
2014-01-16 14:24:42 +00:00
paul
71fbba2b1e utils: parse .rsj file by rstconv tool
git-svn-id: trunk@26479 -
2014-01-16 13:57:33 +00:00
paul
e7636cd6e6 compiler: fix a bug in .rsj output and enable it by default
git-svn-id: trunk@26478 -
2014-01-16 13:57:08 +00:00
paul
3aec5da7a7 compiler: use widestrings for json resource file generation
git-svn-id: trunk@26477 -
2014-01-16 12:07:26 +00:00
michael
d7fb3be2af * Patch from reinier (bug id 25544)
git-svn-id: trunk@26476 -
2014-01-16 10:49:55 +00:00
paul
3bd53b9658 compiler: add a method for generating json files for resource strings (for experiments only now)
git-svn-id: trunk@26475 -
2014-01-16 09:26:53 +00:00
Jonas Maebe
8065fc24d9 * fixed indentation of stack slot allocation debug statements
git-svn-id: trunk@26474 -
2014-01-15 20:36:59 +00:00
Jonas Maebe
2518c526c7 * always use a new register for array indices modified by a constant,
improves register/stack allocation

git-svn-id: trunk@26473 -
2014-01-15 20:36:56 +00:00
Jonas Maebe
a5653916e0 * convert array indices always to s32int, because that is the index type used
by java arrays (otherwise we may get unwanted sign extensions after
    performing e.g. an s16bit operation, see the test)

git-svn-id: trunk@26472 -
2014-01-15 20:36:52 +00:00