Alex Lorenz
7b1d22a17d
PseudoSourceValue: Replace global manager with a manager in a machine function.
...
This commit removes the global manager variable which is responsible for
storing and allocating pseudo source values and instead it introduces a new
manager class named 'PseudoSourceValueManager'. Machine functions now own an
instance of the pseudo source value manager class.
This commit also modifies the 'get...' methods in the 'MachinePointerInfo'
class to construct pseudo source values using the instance of the pseudo
source value manager object from the machine function.
This commit updates calls to the 'get...' methods from the 'MachinePointerInfo'
class in a lot of different files because those calls now need to pass in a
reference to a machine function to those methods.
This change will make it easier to serialize pseudo source values as it will
enable me to transform the mips specific MipsCallEntry PseudoSourceValue
subclass into two target independent subclasses.
Reviewers: Akira Hatanaka
llvm-svn: 244693
2015-08-11 23:09:45 +00:00
Ahmed Bougacha
ee490f0abc
[CodeGen] ArrayRef'ize cond/pred in various TII APIs. NFC.
...
llvm-svn: 239553
2015-06-11 19:30:37 +00:00
Keno Fischer
154ce9f3df
[InstrInfo] Refactor foldOperandImpl to thread through InsertPt. NFC
...
Summary:
This was a longstanding FIXME and is a necessary precursor to cases
where foldOperandImpl may have to create more than one instruction
(e.g. to constrain a register class). This is the split out NFC changes from
D6262.
Reviewers: pete, ributzka, uweigand, mcrosier
Reviewed By: mcrosier
Subscribers: mcrosier, ted, llvm-commits
Differential Revision: http://reviews.llvm.org/D10174
llvm-svn: 239336
2015-06-08 20:09:58 +00:00
Brendon Cahoon
44a2180995
[Hexagon] Update AnalyzeBranch, etc target hooks
...
Improved the AnalyzeBranch, InsertBranch, and RemoveBranch
functions in order to handle more of our branch instructions.
This requires changes to analyzeCompare and PredicateInstructions.
Specifically, we've added support for new value compare jumps,
improved handling of endloop, added more compare instructions,
and improved support for predicate instructions.
Differential Revision: http://reviews.llvm.org/D9559
llvm-svn: 236876
2015-05-08 16:16:29 +00:00
Brendon Cahoon
37b8b0d293
[Hexagon] Use constant extenders to fix up hardware loops
...
Use a loop instruction with a constant extender for a hardware
loop instruction that is too far away from the start of the loop.
This is cheaper than changing the SA register value.
Differential Revision: http://reviews.llvm.org/D9262
llvm-svn: 235882
2015-04-27 14:16:43 +00:00
Krzysztof Parzyszek
8605e42505
[Hexagon] Use A2_tfrsi for constant pool and jump table addresses
...
llvm-svn: 235535
2015-04-22 18:25:53 +00:00
Krzysztof Parzyszek
be5ccc1041
[Hexagon] Consider constant-extended offsets to be valid
...
llvm-svn: 235529
2015-04-22 17:51:26 +00:00
Krzysztof Parzyszek
75c2c01b61
[Hexagon] Overhaul of stack object allocation
...
- Use static allocation for aligned stack objects.
- Simplify dynamic stack object allocation.
- Simplify elimination of frame-indices.
llvm-svn: 235521
2015-04-22 16:43:53 +00:00
Krzysztof Parzyszek
bcfafa313d
Expand MUX instructions early on Hexagon
...
This time with all files included.
llvm-svn: 233696
2015-03-31 13:35:12 +00:00
Krzysztof Parzyszek
a45218861d
Revert 233694. Weak SVN-fu.
...
llvm-svn: 233695
2015-03-31 13:32:32 +00:00
Krzysztof Parzyszek
c520a7c528
Expand MUX instructions early on Hexagon
...
llvm-svn: 233694
2015-03-31 13:29:17 +00:00
Krzysztof Parzyszek
9cc7bfdeec
[Hexagon] Add support for vector instructions
...
llvm-svn: 232728
2015-03-19 16:33:08 +00:00
Krzysztof Parzyszek
7711e054b1
[Hexagon] ENDLOOP is a non-reversible conditional branch
...
llvm-svn: 232725
2015-03-19 15:18:57 +00:00
Krzysztof Parzyszek
9be33ff87e
[Hexagon] Use pseudo-instructions for true/false predicate values
...
llvm-svn: 232657
2015-03-18 19:07:53 +00:00
Krzysztof Parzyszek
74e58441b5
[Hexagon] Intrinsics for circular and bit-reversed loads and stores
...
llvm-svn: 232645
2015-03-18 16:23:44 +00:00
Krzysztof Parzyszek
7c0a6d7439
[Hexagon] Handle ENDLOOP0 in InsertBranch and RemoveBranch
...
llvm-svn: 232643
2015-03-18 15:56:43 +00:00
Eric Christopher
430437ec76
Remove subtarget dependence from HexagonRegisterInfo.
...
llvm-svn: 231887
2015-03-10 23:45:55 +00:00
Colin LeMahieu
91da68b7ad
[Hexagon] Use single tailcall pseudoinst and fix checking for label jumping versus tail calling.
...
llvm-svn: 231713
2015-03-09 22:05:21 +00:00
Colin LeMahieu
a4d567fa07
[Hexagon] Reapply r231699. Remove assumption that second operand is an immediate when checking if A2_tfrsi is combinable.
...
llvm-svn: 231710
2015-03-09 21:48:13 +00:00
Benjamin Kramer
411a71a68d
ArrayRefize memory operand folding. NFC.
...
llvm-svn: 230846
2015-02-28 12:04:00 +00:00
David Blaikie
9259521220
Fix the clang -Werror build (-Wunused-variable)
...
llvm-svn: 228635
2015-02-10 00:16:36 +00:00
Colin LeMahieu
6ba6e9c428
[Hexagon] Removing more V4 predicates since V4 is the required minimum.
...
llvm-svn: 228614
2015-02-09 21:56:37 +00:00
Colin LeMahieu
db2545bd9b
[Hexagon] Renaming A2_addi and formatting.
...
llvm-svn: 228318
2015-02-05 17:49:13 +00:00
Colin LeMahieu
ac8c4238a0
[Hexagon] Adding encoding information for absolute-reg mode stores. Xfailing a test until constant extenders are correctly put in the same packet.
...
llvm-svn: 228158
2015-02-04 17:52:06 +00:00
Colin LeMahieu
0710e9b065
[Hexagon] Replacing old versions of stores and loads.
...
llvm-svn: 226065
2015-01-15 00:15:30 +00:00
Colin LeMahieu
255d98103d
[Hexagon] Replacing old version of convert and load f64.
...
llvm-svn: 226057
2015-01-14 23:07:36 +00:00
Colin LeMahieu
b97153f51b
[Hexagon] Removing old versions of cmph and updating references.
...
llvm-svn: 226013
2015-01-14 18:26:14 +00:00
Colin LeMahieu
5aaa1beaef
[Hexagon] Removing old versions of cmpb and updating references.
...
llvm-svn: 226006
2015-01-14 18:05:44 +00:00
Colin LeMahieu
26ee1d374d
[Hexagon] Deleting versions of compare-not that don't have encoding information. Updating references.
...
llvm-svn: 226003
2015-01-14 16:49:12 +00:00
Colin LeMahieu
7c1bcabc22
[Hexagon] Adding dealloc_return encoding and absolute address stores.
...
llvm-svn: 225267
2015-01-06 16:15:15 +00:00
Colin LeMahieu
9f18605465
[Hexagon] Adding add/sub with carry, logical shift left by immediate and memop instructions. Removing old defs without bits and updating references.
...
llvm-svn: 225210
2015-01-05 21:36:38 +00:00
Craig Topper
03e518b16d
Replace several 'assert(false' with 'llvm_unreachable' or fold a condition into the assert.
...
llvm-svn: 225160
2015-01-05 10:15:49 +00:00
Colin LeMahieu
e11e421bc5
[Hexagon] Removing old newvalue store variants. Adding postincrement immediate newvalue stores.
...
llvm-svn: 225009
2014-12-30 22:28:31 +00:00
Colin LeMahieu
a76ddd9ae4
[Hexagon] Adding indexed store new-value variants.
...
llvm-svn: 225007
2014-12-30 22:00:26 +00:00
Colin LeMahieu
ef54aa0778
[Hexagon] Adding indexed store of immediates.
...
llvm-svn: 225006
2014-12-30 21:01:38 +00:00
Colin LeMahieu
4a47613bb1
[Hexagon] Adding indexed stores.
...
llvm-svn: 225005
2014-12-30 20:42:23 +00:00
Colin LeMahieu
be9ae58d93
[Hexagon] Adding reg-reg indexed load forms.
...
llvm-svn: 224997
2014-12-30 18:58:47 +00:00
Colin LeMahieu
d8726fd59b
[Hexagon] Adding post-increment register form stores and register-immediate form stores with tests.
...
llvm-svn: 224952
2014-12-29 20:44:51 +00:00
Colin LeMahieu
d92e961fd1
[Hexagon] Replacing the remaining postincrement stores with versions that have encoding bits.
...
llvm-svn: 224951
2014-12-29 20:00:43 +00:00
Colin LeMahieu
bb631541eb
[Hexagon] Renaming old multiclass for removal. Adding post-increment store classes and instruction defs.
...
llvm-svn: 224949
2014-12-29 19:42:14 +00:00
Colin LeMahieu
80ca4bde69
[Hexagon] Adding remaining post-increment instruction variants. Removing unused classes.
...
llvm-svn: 224868
2014-12-26 19:31:46 +00:00
Colin LeMahieu
510942bba6
[Hexagon] Adding post-increment unsigned byte loads.
...
llvm-svn: 224867
2014-12-26 19:12:11 +00:00
Colin LeMahieu
e0aad91d5f
[Hexagon] Adding post-increment signed byte loads with tests.
...
llvm-svn: 224866
2014-12-26 18:57:13 +00:00
Colin LeMahieu
3a9d8a20be
[Hexagon] Adding doubleword load.
...
llvm-svn: 224787
2014-12-23 20:44:59 +00:00
Colin LeMahieu
c8d82f0149
[Hexagon] Reapplying 224775 load words.
...
llvm-svn: 224786
2014-12-23 20:02:16 +00:00
Colin LeMahieu
240787f100
Reverting 224775 until mayLoad flag is addressed.
...
llvm-svn: 224783
2014-12-23 19:22:59 +00:00
Colin LeMahieu
9d1882c36f
[Hexagon] Adding word loads.
...
llvm-svn: 224775
2014-12-23 18:06:56 +00:00
Colin LeMahieu
263816de1a
[Hexagon] Adding signed halfword loads.
...
llvm-svn: 224774
2014-12-23 17:25:57 +00:00
Colin LeMahieu
df751494b1
[Hexagon] Adding unsigned halfword load.
...
llvm-svn: 224772
2014-12-23 16:42:57 +00:00
Colin LeMahieu
b1f14d473d
[Hexagon] Adding memb instruction. Fixing whitespace in test from 224730.
...
llvm-svn: 224735
2014-12-22 21:40:43 +00:00