Jonas Maebe
555634b755
* (re)set upper bits of register when appropriate for all operations in
...
a_op_reg_reg() (except for NOT, which was already handled correctly)
+ test
git-svn-id: trunk@25840 -
2013-10-22 07:41:52 +00:00
florian
8fb7cf822b
* unified internal errors
...
git-svn-id: trunk@25647 -
2013-10-05 12:37:46 +00:00
florian
e0f48b9f02
* calculate stack correction on exit correctly if stack parameters are passed
...
git-svn-id: trunk@25427 -
2013-09-05 21:40:33 +00:00
florian
36e6f99843
* fix tthumbcgarm.g_flags2reg, mov reg,#imm for thumb updates the flags
...
git-svn-id: trunk@25426 -
2013-09-05 21:40:30 +00:00
florian
e2ec3bbcb0
* do shifts for sign/zero extensions correctly
...
git-svn-id: trunk@25418 -
2013-09-04 21:00:46 +00:00
florian
333e84202f
* fixed a_load_reg_reg for thumb
...
git-svn-id: trunk@25408 -
2013-09-03 21:11:02 +00:00
Károly Balogh
86cb4d0c12
use a TSuperRegister instead of an aint
...
git-svn-id: trunk@25383 -
2013-08-28 12:58:29 +00:00
Károly Balogh
c677f1fd69
trying harder to follow the code style (no functional changes)
...
git-svn-id: trunk@25382 -
2013-08-28 11:25:15 +00:00
Károly Balogh
cb4d01627f
save an extra reg if it's required to keep 64bit stack alignment on ARM
...
git-svn-id: trunk@25379 -
2013-08-27 12:49:50 +00:00
florian
d4968e054b
+ arm: tsettings.instructionset
...
* the selected instruction set is now independent from the cpu type: e.g. armv7-a can perfectly execute thumb(2) code
git-svn-id: trunk@25370 -
2013-08-25 21:56:12 +00:00
florian
f34bee1df7
* arm thumb does not support ror reg1,reg2,#imm
...
git-svn-id: trunk@25355 -
2013-08-23 18:41:24 +00:00
florian
3ebe708574
* do not use r13/r15 for certain data processing operations
...
* correct OP_AND with certain types of constants
git-svn-id: trunk@25350 -
2013-08-23 15:22:58 +00:00
florian
bb73a2891b
* prevent generation of mul/mla statements with illegal registers
...
git-svn-id: trunk@25343 -
2013-08-23 15:22:41 +00:00
Jonas Maebe
4ec9ec2009
+ PIC support for Darwin/ARM:
...
o does not use GOT
o enabled by default like for other Darwin platforms
- removed Darwin/ARM call stub support: no longer needed with current
Xcode versions (at least Xcode 4.2+), and we didn't support PIC
in them yet
git-svn-id: trunk@25325 -
2013-08-22 08:14:24 +00:00
florian
6606955b88
+ basic support for pic on arm-linux
...
git-svn-id: trunk@25297 -
2013-08-19 21:35:37 +00:00
Jonas Maebe
57cdd8c106
* set symbol type/binding of data referred by ppc and arm/darwin stubs (part
...
of r25264, fixes internalerror 2013081601 after r25266)
git-svn-id: trunk@25275 -
2013-08-17 16:26:37 +00:00
Jonas Maebe
3b9b6a0cd7
* explicitly define the asmsymbols for Darwin call stubs as local
...
git-svn-id: trunk@25264 -
2013-08-16 10:07:46 +00:00
Jeppe Johansen
0bb8d24e24
Add some immediate forms of shift instructions to tcgthumb.a_op_const_reg
...
git-svn-id: trunk@24637 -
2013-05-30 12:07:32 +00:00
florian
e6489ed7d2
* arm thumb: do not generate illegal ror instructions
...
git-svn-id: trunk@24439 -
2013-05-04 22:00:17 +00:00
florian
7bea00e5fb
* arm thumb: allow interface trampolines to non-virtual methods with large offsets
...
git-svn-id: trunk@24434 -
2013-05-04 19:54:03 +00:00
florian
6197330bad
* arm thumb: take care of constant restrictions when creating interface wrappers for non-virtual methods
...
git-svn-id: trunk@24415 -
2013-05-03 21:12:16 +00:00
florian
f3b7f6197b
* arm thumb: generate proper code for rol
...
git-svn-id: trunk@24414 -
2013-05-03 20:53:58 +00:00
florian
f80b6f4774
* arm thumb: take care of large offsets in interface wrappers
...
git-svn-id: trunk@24203 -
2013-04-07 21:56:37 +00:00
florian
e41b7b1b94
* arm thumb: strh/ldrh does not allow stack pointer based references with offset
...
git-svn-id: trunk@24200 -
2013-04-07 21:27:59 +00:00
florian
7ba197a221
* fix stack parameter handling for arm thumb
...
* fix entry/exit code generation for arm thumb
git-svn-id: trunk@24197 -
2013-04-07 21:01:15 +00:00
florian
f9ef8e90da
+ a_op_const_reg_reg for arm thumb taking care of availability of add sp,sp, ...
...
* handle references with base and index on arm thumb correctly
git-svn-id: trunk@24196 -
2013-04-07 21:01:11 +00:00
florian
f25a905904
* fix register allocation initalization for arm thumb
...
* avoid that the register allocator creates code which writes to frame/stack pointer
git-svn-id: trunk@24190 -
2013-04-07 21:00:50 +00:00
florian
075abd6220
+ support of stackframesize for arm thumb
...
+ estimatedtempsize to get a good estimatation for architectures which require to know the stack size before
git-svn-id: trunk@24188 -
2013-04-07 21:00:38 +00:00
florian
64bc09ae58
* fixes several issues with arm thumb stack frame
...
git-svn-id: trunk@23988 -
2013-03-24 21:40:23 +00:00
florian
89b4939cec
* correctly handle stackframes with size>508 for arm thumb
...
git-svn-id: trunk@23977 -
2013-03-24 18:51:23 +00:00
florian
c345ed8945
* generate branches for arm-thumb which are always sufficient big, the optimizer can fix this later on
...
git-svn-id: trunk@23904 -
2013-03-17 20:26:06 +00:00
florian
086ae4b999
Merge r22905 and r22906
...
git-svn-id: trunk@23773 -
2013-03-10 10:45:34 +00:00
florian
08bf826334
Merges 22828,22829
...
git-svn-id: trunk@23756 -
2013-03-09 20:49:57 +00:00
florian
9198630ce3
* fix armv7m compiler
...
git-svn-id: trunk@23686 -
2013-03-03 21:59:34 +00:00
florian
1eeeb309c7
* intial armv6m support, it is not working yet, constant pool insertation and conditional branch fixup is not working yet
...
git-svn-id: trunk@23682 -
2013-03-03 12:20:10 +00:00
yury
d8902af3d6
* Do not replace ADD by SUB and vice-versa when overflow checking is enabled. Fixes tw15304 for ARM.
...
git-svn-id: trunk@23517 -
2013-01-24 21:49:21 +00:00
Jonas Maebe
69c29a415f
* pass the procdef to getintparaloc instead of only the proccalloption, so
...
that the type of the parameters can be determined automatically
o added compilerproc declarations for all helpers called in the compiler
via their assembler name, so we can look up the corresponding procdef
git-svn-id: trunk@23325 -
2013-01-06 15:05:40 +00:00
florian
47d43750e4
* remove unused units from uses statements
...
git-svn-id: trunk@23306 -
2013-01-03 23:07:09 +00:00
florian
3143f0e1be
* fix by Jeppe Johansen for bitscan which was broken by the last fix for normal arm code
...
git-svn-id: trunk@22866 -
2012-10-28 17:57:22 +00:00
florian
1520bcc4f0
* fix bsf for armv7+
...
git-svn-id: trunk@22860 -
2012-10-27 20:17:58 +00:00
Jeppe Johansen
818b43c060
Updated localalign values, and changed the behaviour of alignment of load/stores to not break aligned half-word copies
...
git-svn-id: branches/laksen/arm-embedded@22828 -
2012-10-23 12:45:40 +00:00
Jeppe Johansen
628d46f2d3
Fixed Bsf* functions on platforms that support RBIT
...
Fixed stackframe epilogue code for Thumb2 to allow proper processing of interrupts
git-svn-id: branches/laksen/arm-embedded@22813 -
2012-10-21 19:13:59 +00:00
Jeppe Johansen
4e84431dde
Fix some optimizations which assume that there are 3 operands
...
Add simple Mul+Sub/Mul+Add into MLS/MLA optimizations
Fix some other small issues in the optimizer
Implement Interlocked* functions with proper use of LDREX/STREX
git-svn-id: branches/laksen/arm-embedded@22801 -
2012-10-21 16:20:52 +00:00
Jeppe Johansen
a8f9b0dac4
Added initial support for the Cortex-M4F FPv4_S16 FPU
...
git-svn-id: branches/laksen/arm-embedded@22597 -
2012-10-08 20:10:45 +00:00
Jonas Maebe
1a97e61619
* factored out fixref from handle_load_store, and handle indirect symbol
...
loads for darwin in fixref (used to be done in ncgld, but was removed
there)
git-svn-id: trunk@22445 -
2012-09-23 21:25:32 +00:00
florian
5facc6ad5e
* BsrX(0) should return 255 instead of $ffffffff
...
git-svn-id: trunk@22316 -
2012-09-04 15:16:59 +00:00
florian
d67af82228
* patch by Jeppe Johansen: Thumb2-only targets don't support the BLX <label>, and have to use BL <label>, resolves #22770
...
git-svn-id: trunk@22314 -
2012-09-04 14:57:26 +00:00
florian
d63ebe6464
* bsr implementation for armv5+ using clz
...
git-svn-id: trunk@22310 -
2012-09-04 12:56:38 +00:00
florian
59012afe26
* better heuristics to decide when a mul by a constant shall be replaced by shift/add/sub sequences
...
git-svn-id: trunk@22300 -
2012-09-03 13:39:52 +00:00
florian
2f8027c63f
+ more sophisticated code to optimize multiplications on arm
...
+ the multiplication optimization needs a popcnt function
+ simple test
git-svn-id: trunk@22299 -
2012-09-03 13:39:45 +00:00