Anton Korobeynikov
|
8d1837d9be
|
Provide "wide" muls and divs/rems
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75958 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:56:42 +00:00 |
|
Anton Korobeynikov
|
11275eba17
|
Fix thinko
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75957 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:56:11 +00:00 |
|
Anton Korobeynikov
|
338cf05f16
|
Fix epic bug with invalid regclass for R0D
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75956 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:55:51 +00:00 |
|
Anton Korobeynikov
|
d519756203
|
Let RegisterInfo decide whether it can emit cross-class copy or not
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75955 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:55:26 +00:00 |
|
Anton Korobeynikov
|
3e980b4f11
|
More register pairs (now 32 bit ones)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75954 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:55:04 +00:00 |
|
Anton Korobeynikov
|
05a54ff12a
|
Add even-odd register pairs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75953 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:54:45 +00:00 |
|
Anton Korobeynikov
|
2fdecaf1d5
|
Unbreak due to mainline api change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75952 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:54:20 +00:00 |
|
Anton Korobeynikov
|
dd0239b42c
|
Preliminary mul lowering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75951 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:53:55 +00:00 |
|
Anton Korobeynikov
|
bf0221771f
|
More extloads
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75950 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:53:35 +00:00 |
|
Anton Korobeynikov
|
7d1e39b7c6
|
SELECT_CC lowering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75948 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:52:51 +00:00 |
|
Anton Korobeynikov
|
4ec3e5ffd1
|
Conditional branches and comparisons
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75947 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:52:31 +00:00 |
|
Anton Korobeynikov
|
c7b71bede4
|
Emit correct offset for PseudoSourceValue
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75946 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:52:10 +00:00 |
|
Anton Korobeynikov
|
656ac6f0f6
|
Provide proper stack offsets for outgoing arguments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75945 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:51:53 +00:00 |
|
Anton Korobeynikov
|
4f9017f214
|
Change register allocation order to reduce amount of callee-saved regs to be spilled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75944 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:51:34 +00:00 |
|
Anton Korobeynikov
|
ef5decab53
|
Emit callee-saved regs spills / restores
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75943 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:51:12 +00:00 |
|
Anton Korobeynikov
|
33b350bf24
|
Scan for presence of calls and determine max callframe size early. To allow ProcessFunctionBeforeCalleeSaveScan() use this information
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75942 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:50:40 +00:00 |
|
Anton Korobeynikov
|
ba249e41f3
|
Some preliminary call lowering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75941 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:50:21 +00:00 |
|
Anton Korobeynikov
|
3c98c616c5
|
Prologue / epilogue emission
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75940 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:49:49 +00:00 |
|
Anton Korobeynikov
|
51f613fb2b
|
Add simple frame index elimination
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75939 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:49:25 +00:00 |
|
Anton Korobeynikov
|
c4368a1507
|
Swap the order of imm and idx field for rri addrmode in order to make handling of rri and ri addrmodes common
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75937 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:48:42 +00:00 |
|
Anton Korobeynikov
|
3240740ef4
|
Do not truncate sign bits for negative imms
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75936 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:48:23 +00:00 |
|
Anton Korobeynikov
|
711d5b68e0
|
Add address computation stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75935 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:47:59 +00:00 |
|
Anton Korobeynikov
|
dfd0dffa36
|
Cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75934 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:47:36 +00:00 |
|
Anton Korobeynikov
|
c8301d17a8
|
Add mem-imm stores
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75933 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:47:14 +00:00 |
|
Anton Korobeynikov
|
30da5380e0
|
[PATCH 023/155] Typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75932 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:45:22 +00:00 |
|
Anton Korobeynikov
|
961bb6f430
|
Add stores and truncstores
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75931 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:45:00 +00:00 |
|
Anton Korobeynikov
|
dc28955b3f
|
Add patterns for various extloads
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75930 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:44:30 +00:00 |
|
Anton Korobeynikov
|
3360da9772
|
Do some heroic rri address matching (shamelessly stolen from x86 backend). Not tested though.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75929 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:44:00 +00:00 |
|
Anton Korobeynikov
|
4cad7d29fc
|
Change register allocation order, so R0 will be allocated the last among scratch. This will make address-calculation code much more happy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75928 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:43:40 +00:00 |
|
Anton Korobeynikov
|
9e4816e09f
|
Add shifts and reg-imm address matching
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75927 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:43:18 +00:00 |
|
Anton Korobeynikov
|
a51752cbea
|
Add bunch of 32-bit patterns... Uffff :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75926 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:42:31 +00:00 |
|
Anton Korobeynikov
|
0692fabb4e
|
Propagate return result extension type
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75925 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:35:48 +00:00 |
|
Anton Korobeynikov
|
e0167c1d5a
|
Add 32 bit subregs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75923 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:35:30 +00:00 |
|
Anton Korobeynikov
|
9342d3180a
|
Add another bunch of reg-imm patterns for add/or/and/xor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75922 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:35:08 +00:00 |
|
Anton Korobeynikov
|
da308c9a67
|
Add bunch of reg-imm movs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75921 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:34:50 +00:00 |
|
Anton Korobeynikov
|
fc9ceeaad8
|
Proper match halfword-imm operands for mov and add
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75920 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:34:24 +00:00 |
|
Anton Korobeynikov
|
89edcd0927
|
Provide masked reg-imm 'or' and 'and'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75919 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:33:57 +00:00 |
|
Anton Korobeynikov
|
e6220fb230
|
Add reg-reg and pattern
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75917 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:32:49 +00:00 |
|
Anton Korobeynikov
|
bdc9081693
|
Add sub reg-reg pattern
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75916 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:32:16 +00:00 |
|
Anton Korobeynikov
|
b573f99ab7
|
Add xor reg-reg pattern
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75915 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:31:28 +00:00 |
|
Anton Korobeynikov
|
26ba0b1ec5
|
Add or reg-reg pattern.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75914 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:30:53 +00:00 |
|
Anton Korobeynikov
|
0676d2887a
|
Add add reg-reg and reg-imm patterns
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75913 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:30:15 +00:00 |
|
Anton Korobeynikov
|
1cc9dc7267
|
Add simple reg-reg and reg-imm moves
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75912 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:29:38 +00:00 |
|
Anton Korobeynikov
|
87a24e3ee4
|
Minimal lowering for formal_arguments / ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75911 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:28:59 +00:00 |
|
Anton Korobeynikov
|
4403b930f8
|
Let's start another backend :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75909 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 13:27:25 +00:00 |
|
Richard Osborne
|
db9e697725
|
Combine an unaligned store of unaligned load into a memmove.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75908 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 12:50:48 +00:00 |
|
Richard Osborne
|
787e90f862
|
Lower the threshold at which memcpy / memmove / memset stop being expanded
inline in the XCore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75906 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 12:41:34 +00:00 |
|
Richard Osborne
|
ff4149b903
|
Fix typo in last commit on expansion of unaligned loads.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75903 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 10:48:47 +00:00 |
|
Richard Osborne
|
ccb7e96ef0
|
Expand unaligned 32 bit loads from an address which is a constant
offset from a 32 bit aligned base as follows:
ldw low, base[offset >> 2]
ldw high, base[(offset >> 2) + 1]
shr low_shifted, low, (offset & 0x3) * 8
shl high_shifted, high, 32 - (offset & 0x3) * 8
or result, low_shifted, high_shifted
Expand 32 bit loads / stores with 16 bit alignment into two 16 bit
loads / stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75902 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 10:42:35 +00:00 |
|
Richard Osborne
|
7f47ce9662
|
Custom lower unaligned 32 bit stores and loads into libcalls. This is
a big code size win since before they were expanding to upto 16
instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75901 91177308-0d34-0410-b5e6-96231b3b80d8
|
2009-07-16 10:21:18 +00:00 |
|