Colin LeMahieu
c69f7ff6c0
[Hexagon] Adding change of flow max 1 (cofMax1) TS flag for marking this restriction rather than implying it from TypeJR.
...
llvm-svn: 283665
2016-10-08 17:18:51 +00:00
Colin LeMahieu
8ed1aee9dd
[Hexagon] NFC Removing 'V4_' prefix from duplex instruction names.
...
llvm-svn: 283514
2016-10-07 00:15:07 +00:00
Mehdi Amini
36d33fc109
Use StringRef instead of raw pointers in MCAsmInfo/MCInstrInfo APIs (NFC)
...
llvm-svn: 283018
2016-10-01 06:46:33 +00:00
Krzysztof Parzyszek
e737b86f8c
[Hexagon] Handle double-vector registers as new-value producers
...
Patch by Colin LeMahieu.
llvm-svn: 267897
2016-04-28 15:54:48 +00:00
Krzysztof Parzyszek
c6f1e1a709
[Hexagon] Properly encode registers in duplex instructions
...
llvm-svn: 263980
2016-03-21 20:13:33 +00:00
Colin LeMahieu
5cb6eea664
[Hexagon] Modifying r262258 to only be in effect in the hand assembler path, not the integrated assembler.
...
llvm-svn: 262400
2016-03-01 21:37:41 +00:00
Colin LeMahieu
ab9eca4d9f
[Hexagon] As a size optimization, not lazy extending TPREL or DTPREL variants since they're usually in range.
...
llvm-svn: 262258
2016-02-29 21:21:56 +00:00
Colin LeMahieu
73cd686ce1
[Hexagon] Using MustExtend flag on expression instead of passing around bools.
...
llvm-svn: 262238
2016-02-29 18:39:51 +00:00
Colin LeMahieu
5e552d141f
[Hexagon] Replacing reference/dereference with reference cast.
...
llvm-svn: 261133
2016-02-17 18:50:21 +00:00
Benjamin Kramer
98520ca73b
[Hexagon] cast<> a reference instead of referencing + dereferencing.
...
llvm-svn: 261077
2016-02-17 09:28:45 +00:00
Colin LeMahieu
ecef1d9cbc
[Hexagon] Adding relocation for code size, cold path optimization allowing a 23-bit 4-byte aligned relocation to be a valid instruction encoding.
...
The usual way to get a 32-bit relocation is to use a constant extender which doubles the size of the instruction, 4 bytes to 8 bytes.
Another way is to put a .word32 and mix code and data within a function. The disadvantage is it's not a valid instruction encoding and jumping over it causes prefetch stalls inside the hardware.
This relocation packs a 23-bit value in to an "r0 = add(rX, #a)" instruction by overwriting the source register bits. Since r0 is the return value register, if this instruction is placed after a function call which return void, r0 will be filled with an undefined value, the prefetch won't be confused, and the callee can access the constant value by way of the link register.
llvm-svn: 261006
2016-02-16 20:38:17 +00:00
Benjamin Kramer
986a49b036
[Hexagon] Hoist nonnull assert up.
...
Once a pointer is turned into a reference it cannot be nullptr, clang
rightfully warns about this assert being a tautology. Put the assert
before the reference is created.
llvm-svn: 260949
2016-02-16 09:53:47 +00:00
Colin LeMahieu
c7b2124d49
[NFC] Fixing naming convention, lowercase start of function name.
...
llvm-svn: 260903
2016-02-15 18:47:55 +00:00
Colin LeMahieu
98c8e070b9
[Hexagon] Wrapping all MCExprs inside MCOperands within HexagonMCExpr to simplify handling and allow flags on the expression.
...
llvm-svn: 260902
2016-02-15 18:42:07 +00:00
Craig Topper
15576e1c8f
Use make_range to reduce mentions of iterator type. NFC
...
llvm-svn: 254872
2015-12-06 05:08:07 +00:00
Colin LeMahieu
f0af6e5243
[Hexagon] Factoring bundle creation in to a utility function.
...
llvm-svn: 253056
2015-11-13 17:42:46 +00:00
Colin LeMahieu
b3c97271e3
[Hexagon] Fixing leak in padEndloop by allocating in MCContext.
...
llvm-svn: 253019
2015-11-13 07:58:06 +00:00
Benjamin Kramer
7c576d8bcf
[Hexagon] Allocate MCInst in the MCContext to avoid leaking it.
...
Found by leaksanitizer.
llvm-svn: 252931
2015-11-12 19:30:40 +00:00
Colin LeMahieu
8ab7e8e1b5
[Hexagon] Fixing load instruction parsing and reenabling tests.
...
llvm-svn: 252555
2015-11-10 00:02:27 +00:00
Colin LeMahieu
7cd0892729
[Hexagon] Enabling ASM parsing on Hexagon backend and adding instruction parsing tests. General updating of the code emission.
...
llvm-svn: 252443
2015-11-09 04:07:48 +00:00
Alexander Kornienko
f00654e31b
Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC)
...
Apparently, the style needs to be agreed upon first.
llvm-svn: 240390
2015-06-23 09:49:53 +00:00
Alexander Kornienko
70bc5f1398
Fixed/added namespace ending comments using clang-tidy. NFC
...
The patch is generated using this command:
tools/clang/tools/extra/clang-tidy/tool/run-clang-tidy.py -fix \
-checks=-*,llvm-namespace-comment -header-filter='llvm/.*|clang/.*' \
llvm/lib/
Thanks to Eugene Kosov for the original patch!
llvm-svn: 240137
2015-06-19 15:57:42 +00:00
Colin LeMahieu
be99a02b1b
[Hexagon] Adding MC ELF streamer and updating addend relocation test which shows correct ELF symbol.
...
llvm-svn: 239876
2015-06-17 03:06:16 +00:00
Colin LeMahieu
be8c453d58
[Hexagon] Reapply r239097 with tests corrected for shuffling and duplexing.
...
llvm-svn: 239161
2015-06-05 16:00:11 +00:00
Colin LeMahieu
c40be85adc
Revert r239095 incorrect test tree.
...
llvm-svn: 239102
2015-06-04 21:32:42 +00:00
Colin LeMahieu
fc52c11d80
[Hexagon] Adding functionality for duplexing. Duplexing is a way to compress commonly used pairs of instructions in order to reduce code size. The test case duplex.ll normally would be 8 bytes, assign register to 0 and jump to link register. After duplexing this is only 4 bytes. This also tests the HexagonMCShuffler code path which is used to make sure duplexed instructions still follow slot requirements.
...
llvm-svn: 239095
2015-06-04 21:16:16 +00:00
Colin LeMahieu
b23c47bab3
[Hexagon] Adding MC packet shuffler.
...
llvm-svn: 238692
2015-05-31 21:57:09 +00:00
Colin LeMahieu
86f218e7ec
[Hexagon] Adding basic relaxation functionality.
...
llvm-svn: 238660
2015-05-30 18:55:47 +00:00
Colin LeMahieu
68d967d92e
[Hexagon] Disassembling, printing, and emitting instructions a whole-bundle at a time which is the semantic unit for Hexagon. Fixing tests to use the new format. Disabling tests in the direct object emission path for a followup patch.
...
llvm-svn: 238556
2015-05-29 14:44:13 +00:00
Jim Grosbach
e9119e41ef
MC: Modernize MCOperand API naming. NFC.
...
MCOperand::Create*() methods renamed to MCOperand::create*().
llvm-svn: 237275
2015-05-13 18:37:00 +00:00
Colin LeMahieu
b662565475
[Hexagon] Adding expression MC emission and removing XFAIL from test that hits this code path.
...
llvm-svn: 236348
2015-05-01 21:14:21 +00:00
Colin LeMahieu
1174fea31c
[Hexagon] Moving remaining methods off of HexagonMCInst in to HexagonMCInstrInfo and eliminating HexagonMCInst class.
...
llvm-svn: 229914
2015-02-19 21:10:50 +00:00
Colin LeMahieu
745c4710db
[Hexagon] Moving more functions off of HexagonMCInst and in to HexagonMCInstrInfo.
...
llvm-svn: 229903
2015-02-19 19:49:27 +00:00
Colin LeMahieu
af304e5192
[Hexagon] Creating HexagonMCInstrInfo namespace as landing zone for static functions detached from HexagonMCInst.
...
llvm-svn: 229885
2015-02-19 19:00:00 +00:00