Commit Graph

20427 Commits

Author SHA1 Message Date
nickysn
b6c3329f20 + also check for negative powers of 2 in the mod by power-of-2 constant x86 optimization, since the sign of the divisor is ignored by the 'mod' operation
git-svn-id: trunk@36797 -
2017-07-26 16:10:41 +00:00
nickysn
4b00414183 + added helper isabspowerof2, which checks whether abs(value) is a power of 2
git-svn-id: trunk@36796 -
2017-07-26 16:08:31 +00:00
pierre
7ee567fcca Use A_LD_R alias in functions using GOT indirection
git-svn-id: trunk@36795 -
2017-07-26 14:58:03 +00:00
pierre
ef3b006eb2 Use A_LD_R alias in do_spill_replace function
git-svn-id: trunk@36794 -
2017-07-26 14:57:21 +00:00
pierre
6e18d537fc Use A_LD_R and A_ST_R aliases for spilling_create_(load|store) functions
git-svn-id: trunk@36793 -
2017-07-26 14:56:11 +00:00
pierre
f5dfbb5ff3 Add A_ST_R and A_LD_R instruction alias for whole register size store/load
git-svn-id: trunk@36792 -
2017-07-26 14:53:30 +00:00
pierre
6f6139609d Add explicit '.set nompis16' at front of stabs debug information to solve bug report 32138
git-svn-id: trunk@36781 -
2017-07-24 07:31:31 +00:00
florian
a2e442e111 * keep the names of X, Y and Z in assembler files, fixes issue #32150
git-svn-id: trunk@36776 -
2017-07-23 19:24:45 +00:00
florian
8c33fbbe64 * indention fixed
git-svn-id: trunk@36775 -
2017-07-23 19:24:43 +00:00
florian
7ed3757f8c + TCGSparc64.a_load_reg_ref_unaligned
git-svn-id: trunk@36763 -
2017-07-21 21:17:41 +00:00
florian
eaa33f416c * sparc64: fix int to bool type conversions for 64 bit ints
git-svn-id: trunk@36762 -
2017-07-21 20:41:14 +00:00
nickysn
7c306f18e3 + perform unsigned modulus by power of 2 constant by using an AND instruction (instead of DIV) on x86
git-svn-id: trunk@36756 -
2017-07-21 15:58:26 +00:00
nickysn
9853c4a2a3 + enabled the load-modify-store optimization for the double argument version
(i.e. shift/rotate by k) of sar, rol and ror with type conversion on i386 and
  x86_64.

git-svn-id: trunk@36755 -
2017-07-21 13:17:18 +00:00
nickysn
c8377d3bfc + enabled the load-modify-store optimization for the double argument version
(i.e. shift/rotate by k) of sar, rol and ror on i386 and x86_64. Only the case
  without any implicit type conversions is handled for now.

git-svn-id: trunk@36753 -
2017-07-20 14:09:25 +00:00
pierre
6fdd952fd9 Fix check for setting use_unlimited_pic_mode for sparc64
git-svn-id: trunk@36746 -
2017-07-18 18:02:36 +00:00
nickysn
e562926763 + implemented the load/modify/store optimization for i:=sar/rol/ror(i) when
there's a type conversion involved as well (e.g. uint32:=SarLongInt(unit32) ).
  This only works for signed<->unsigned conversions of equal size, due to the
  nature of the sar, rol and ror operations.

git-svn-id: trunk@36745 -
2017-07-18 13:48:35 +00:00
pierre
903955f329 Add 's' for sparc64 specific message prefix
git-svn-id: trunk@36744 -
2017-07-18 12:50:47 +00:00
pierre
4c3d8d422a Add _GLOBAL_OFFSET_TABLE_ for sparc64 if -Cg is used
git-svn-id: trunk@36743 -
2017-07-18 12:49:26 +00:00
pierre
f3459454e6 Fix compilation failure for sparc CPU
git-svn-id: trunk@36741 -
2017-07-18 04:47:49 +00:00
nickysn
cb0c947f37 + enabled the load-modify-store optimization for the single argument version
(i.e. shift/rotate by 1) of sar, rol and ror on i386 and x86_64.

git-svn-id: trunk@36739 -
2017-07-17 14:50:39 +00:00
florian
a7d127cf08 * only sparc v7 and v8 require an instruction between FCMP and the branch
git-svn-id: trunk@36737 -
2017-07-16 09:24:20 +00:00
florian
ac894831e4 * use the 64 bit path in tSparcmoddivnode.pass_generate_code for all 64 bit types (including currency) on sparc64
git-svn-id: trunk@36736 -
2017-07-16 09:24:18 +00:00
svenbarth
0c42b6f44a * fix for Mantis #32118: also provide a range for undefined defs
+ added test

git-svn-id: trunk@36723 -
2017-07-10 19:47:21 +00:00
svenbarth
ca78bfffae * fix for Mantis #32111: allow undefined defs as a for loop's counter; the specialization will decide whether it will compile or not
+ added test

git-svn-id: trunk@36722 -
2017-07-10 19:45:15 +00:00
florian
bccc2f6863 + tcg.a_loadfpu_intreg_reg, make use of it in tcg.a_load_cgparaloc_anyreg
git-svn-id: trunk@36717 -
2017-07-09 21:33:24 +00:00
florian
dd3d62425c * guard case statement by internalerror to avoid a warning
git-svn-id: trunk@36716 -
2017-07-09 21:33:22 +00:00
florian
f30bf547e2 * TCGSparcGen.maybeadjustresult adapted for sparc64
git-svn-id: trunk@36711 -
2017-07-09 18:14:14 +00:00
Károly Balogh
eaa769053b m68k: enable 68881 FPU on Linux and NetBSD by default
git-svn-id: trunk@36699 -
2017-07-08 23:54:39 +00:00
Károly Balogh
0b561b6c8f powerpc: enable SUPPORT_GET_FRAME
git-svn-id: trunk@36698 -
2017-07-08 23:51:55 +00:00
svenbarth
0f9451fbb7 * switch x86_64-linux to indirect entry, essentially allowing for the use of dynamic packages on that target
git-svn-id: trunk@36690 -
2017-07-08 20:39:36 +00:00
florian
13801bebfe * pass debian specific path to c init files to ld for sparc64 as it is done on other targets as well
git-svn-id: trunk@36676 -
2017-07-07 22:33:42 +00:00
florian
25950b8575 * 64 bit multiplications for sparc64 fixed
git-svn-id: trunk@36675 -
2017-07-07 22:18:16 +00:00
florian
bd57ca99a8 * cosmetics
git-svn-id: trunk@36672 -
2017-07-07 22:18:11 +00:00
florian
cbe9a1b65f * make thlcgcpu.g_intf_wrapper usable for sparc64 as well
git-svn-id: trunk@36665 -
2017-07-07 13:17:42 +00:00
florian
8401a460e5 + support 64 bit sar on sparc64
* fix on sparc64 broken a_cmp_const_reg_label and a_cmp_reg_reg_label

git-svn-id: trunk@36661 -
2017-07-07 10:11:44 +00:00
florian
1f4d6e8a4d * compilation on 32 bit sparc fixed
git-svn-id: trunk@36660 -
2017-07-07 09:30:50 +00:00
florian
c8c14d8db9 * pass -32 to the sparc assembler
git-svn-id: trunk@36659 -
2017-07-07 09:08:05 +00:00
florian
a9a0ca6649 * sparc64 needs a helper for overflow checked 64 bit division operations
git-svn-id: trunk@36658 -
2017-07-07 09:08:02 +00:00
florian
ca51bd56c4 + a_jmp_cond64
* generate 64 bit comparisons if needed

git-svn-id: trunk@36657 -
2017-07-06 18:02:24 +00:00
Károly Balogh
8a22807efa m68k: also add Debian's custom library path like on other CPUs
git-svn-id: trunk@36645 -
2017-07-04 22:51:08 +00:00
florian
109612b7e1 * correctly load 32 bit values on sparc64
git-svn-id: trunk@36644 -
2017-07-04 20:52:47 +00:00
florian
57a137068b * integer registers must have the size R_SUBWHOLE for sparc, resolves issue #32065
git-svn-id: trunk@36639 -
2017-07-03 20:49:06 +00:00
florian
28cfa838b5 + support for the different flag registers of sparc
* fixing 64 bit cmp operations on sparc64

git-svn-id: trunk@36638 -
2017-07-03 20:49:05 +00:00
florian
4b30e5ee11 + TSparcmoddivnode.pass_generate_code for SPARC64
git-svn-id: trunk@36637 -
2017-07-03 20:49:03 +00:00
florian
5bc9890727 + more sparc64 instructions
git-svn-id: trunk@36636 -
2017-07-03 20:49:01 +00:00
florian
5b91fd7065 + taicpu.op_reg_sym for sparc
git-svn-id: trunk@36635 -
2017-07-03 20:49:00 +00:00
florian
65c9e6c32e + fccX registers
git-svn-id: trunk@36633 -
2017-07-03 20:48:56 +00:00
florian
94c3ac027b * fixed spelling: fpc_mode -> gpc_mode
git-svn-id: trunk@36632 -
2017-07-03 20:48:53 +00:00
svenbarth
ad65ff5600 * insert symbol only once
git-svn-id: trunk@36620 -
2017-06-30 15:59:33 +00:00
svenbarth
a301bf75ea * ngenutil.tnodeutils.sym_maybe_initialize: don't use "is" operator, but corresponding is_* functions
git-svn-id: trunk@36617 -
2017-06-29 18:51:35 +00:00